게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[자바코드질문] tcp통신 연결 안되는 문제
게시물ID : programmer_23210짧은주소 복사하기
작성자 : qing香(가입:2010-02-27 방문:4064)
추천 : 0
조회수 : 526회
댓글수 : 5개
등록시간 : 2020/12/10 10:48:50

자바 이클립스로 간단한 tcp 통신 연습 중입니다.

서버 코드는 

 

           package com.home.net.TCPConnection;import java.net.*;import java.io.*;import javax.swing.*;publicclassTCPServer{publicstaticvoidmain(String[] args)throws IOException 	{finalint port = 5004; 		ServerSocket server =newServerSocket(port); 		System.out.println("클라이언트의 연결을 기다림...");while(true){ 			Socket sock = server.accept();/* 			 * 클라이언트의 접속을 기다리다가 클라이언트가 접속해 오면  			 * 서비스 소켓은 클라이언트와 연결된 소켓 객체를 반환해 준다. 			 */ 			System.out.println("클라이언트가 접속해 옴..."); 			InetAddress inet = sock.getInetAddress(); 			String cip = inet.getHostAddress(); 			System.out.println("클라이언트의 IP주소 : "+ cip);// 서버는 클라이언트가 보내오는 메시지를 듣고 콘솔에 출력한다. 			InputStream is = sock.getInputStream(); 			BufferedReader in =newBufferedReader(newInputStreamReader(is));// readLine()을 이용해서 메시지 받은 뒤 콘솔에 출력하기. 			String cmsg = in.readLine(); 			System.out.println(cip +"님 >> "+ cmsg); 			in.close(); 			is.close(); 			sock.close();}// while---------------------------------------------------------------- }}     

 

 

클라이언트 코드는

 

           package com.home.net.TCPConnection;import java.net.*;import java.io.*;import javax.swing.*;publicclassTCPClient{publicstaticvoidmain(String[] args)throws IOException, IOException 	{// 서버의 ip주소, 포트번호가 필요함. 		String ip ="192.168.219.100";finalint port = 5004; 		Socket sock =newSocket(ip, port); 		System.out.println("서버와 연결됨..."); 		String msg = JOptionPane.showInputDialog("서버에게 보낼 메시지를 입력하세요.");if(msg == null){return;} 		OutputStream os = sock.getOutputStream(); 		PrintWriter pout =newPrintWriter(os,true);// 서버에 메시지를 보내자. 		pout.println(msg); 		pout.close(); 		os.close(); 		sock.close();}}     

 

물론 int port 변수에, 데스크탑에는 노트북의 IP를, 노트북에는 데스크탑의 IP를 넣어줍니다.

이 코드를 데스크탑과 노트북에서 각자 코딩하고, 먼저 서버를 실행시키면 

"클라이언트의 연결을 기다림"이 뜹니다.

그 후 클라이언트를 실행시키면 

노트북 쪽에서는 String msg = JOptionPane.showInputDialog 가 동작하여 데스크탑 쪽으로 메시지를 보낼 수 있습니다.

 

그런데 데스크탑 쪽에서는 아래와 같은 에러가 나며 접속이 안됩니다.

 

Exception in thread "main" java.netConnectException: Connection timed out: connect

at java.net.DualStackPlainSocketImpl.connect0(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

at java.netSocksSocketImpl.connect(SocksSocketImpl.java:392)

at java.net.Socket.connect(Socket.java:606)

at java.net.Socket.connect(Socket.java:555)

at java.net.Socket.<init>(Socket.java:451)

at java.net.Socket.<init>(Socket.java:228)

 

at TCP01.TCPClient.main(TCPClient.java:14)

 

에러의 마지막 줄인 TCPClient.java : 14번 라인은

Socket sock = new Socket(ip, port); 이겁니다.

데스크탑이나 노트북이나 완전히 똑같은 코드를 사용하는데 데스크탑 쪽에서만 노트북 쪽으로 접속이 안됩니다.

 

뭐가 문제일까요?

 

방화벽도 검색해서 포트도 열어 봤는데 안되어서 질문 드립니다.

어떻게 열어야 할까요?

https://m.blog.naver.com/PostView.nhn?blogId=baum12345&logNo=221430696248&proxyReferer=https:%2F%2Fwww.google.com%2F 

이거 보고 코드에 있는 5004포트를 노트북쪽 인바운드에 추가해 봤는데 안되어서.....

방화벽은 어떻게 열어야 할까요?

 

전체 추천리스트 보기
댓글쓰기
리스트 페이지로
데이터절약모드
◀뒤로가기
PC버전
맨위로▲
공지 운영 게시판요청 자료창고