2010-12-05 4 views
0

Java TCP 소켓을 사용하여 매우 간단한 Java 채팅 프로그램을 만들고 있습니다. 나는 소켓 프로그래밍과 자바에 익숙하지 않다. 클라이언트가 서버에 연결할 때마다 시간이 초과되기 때문에 서버와 연결할 수 없습니다. 어쩌면 내가 잘못된 IP 주소를 입력했기 때문일 수 있습니다. 모르겠습니다. 당신이해야 할 수도 있습니다 창에 (간단한 Java 채팅 프로그램 도움말, 서버 연결시 클라이언트 시간 초과

 try 
     { 
      int iport = Integer.valueOf(port.getText()); 
      int i1; 
      int i2; 
      int i3; 
      int i4; 
      i1 = Integer.valueOf(ip.getText()); 
      i2 = Integer.valueOf(ip1.getText()); 
      i3 = Integer.valueOf(ip2.getText()); 
      i4 = Integer.valueOf(ip3.getText()); 
      byte[] b = new byte[] {(byte)i1, (byte)i2, (byte)i3, (byte)i4 }; 
      InetAddress ipaddr = InetAddress.getByAddress(b); 
      Socket sock = new Socket(ipaddr, iport); 
      BufferedReader input = new BufferedReader(new InputStreamReader(sock.getInputStream())); 
      BufferedWriter output = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); 
      output.write(m.getText()); 
      while(!input.ready()){} 
      msg.setText("\n\n" + input.readLine()); 
      msg.setText("\n\n" + m.getText()); 
      output.close(); 
      input.close(); 
     } 
     catch (Exception ex) 
     { 
      msg.setText("\n\n" + "Error: " + ex.getMessage()); 
     } 

답변

0

서버 사용 텔넷에 연결할 수 있는지 확인 : 여기

 try 
     { 

      int fport = Integer.valueOf(port.getText()); 
      ServerSocket server = new ServerSocket(fport); 
      Socket socket = server.accept(); 
      msg.append("\\n Server is listening to port:" + port.getText()); 
      BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      PrintWriter out = new PrintWriter(socket.getOutputStream()); 
      out.print(msgtxt.getText()); 
      msg.append("\n\n" + input.readLine()); 
      msg.append("\n\n" + Nombre.getText() + msgtxt.getText()); 


     } 
     catch (Exception ex) 
     { 
      msg.setText("\n\n" + "Error:" + ex.getMessage()); 
     } 

는 클라이언트 코드입니다 : 여기

는 서버 코드입니다 더 이상 기본적으로 설치되지 않으므로 설치하십시오).

기본적으로 서버에 대한 연결을 열고 작동하는지 참조 : 추가 (

telnet host port 

그것이 작동 아마 문제가 연결을 establising이 아니라 서버의 응답을 기다리고에없는 경우 귀하의 질문에 대한 예외).

하나의 참고 사항 : 새로운 소켓 (호스트 이름, 포트) 만 입력하면 INetAddress를 만들지 않고 소켓을 열 수 있습니다.

관련 문제