2011-11-25 2 views
0

간단한 클라이언트 서버 소켓 프로그램을 작성하고 a | b | c | * 문자열을 보내고 클라이언트가 그것을 수신하지 않습니다. 클라이언트가 다른 컴퓨터에 있습니다.클라이언트 소켓에 문자열이 수신되지 않습니다.

서버 코드.

String format = "a|b|c|*"; 
ServerSocket ss = new ServerSocket(2222); 
System.out.println("Server Started."); 

while (true) {    
    Socket s = ss.accept(); 
    System.out.println("Connection accepted."); 
    InputStream is = s.getInputStream(); 
    InputStreamReader isr = new InputStreamReader(is); 
    BufferedReader br = new BufferedReader(isr); 
    PrintStream ps = new PrintStream(s.getOutputStream()); 
    ps.println(format);    
    ps.flush(); 
    System.out.println("Format sent."); 
}  

클라이언트 측

try { 
    Socket s = new Socket("192.168.0.71", 2222); 
    // step 3: Get I/O streams 
    InputStream is = s.getInputStream(); 
    InputStreamReader isr= new InputStreamReader(is); 
    BufferedReader br = new BufferedReader(isr); 

    String format = br.readLine(); 
    System.out.println(format); 
} catch(Exception ex){ 
    System.out.println(ex.getMessage()); 
} 

그때는 문자열을 받고 동일한 시스템에서 클라이언트를 생성하고, 내가 다른 컴퓨터 클라이언트에이 문자열을 통과 할 때 그것을받지 않습니다

.

+1

어떻게 될까요? 거기에 예외가 있습니까? 그것은 연결하지만 어떤 데이터도 얻지 못합니까? –

+0

@ Peter, 맞습니다. 연결은되지만 데이터가 없습니다. –

+0

같은 상자와 다른 상자에서 호스트와 포트에 텔넷을 사용하면 무엇을 얻게됩니까? 'telnet 192.168.0.71 2222' –

답변

0

그래서 두 상자에서 코드를 시도하고 원격 연결이 정상적으로 작동했습니다. 좋은 의견의 무리하지만 난 시도하는 몇 가지에 대한 답을 쓰는 거라고 생각 :

  1. 서버에 로컬로 텔넷 및 형식 문자열을 볼 수 있었던 것을 암시하고있다. 벌금. 또한 원격 클라이언트의 텔넷을 서버에 연결할 수 있습니까? 형식 문자열을 참조하십시오.

  2. 원격 텔넷이 작동하지 않으면 방화벽이 있는지 또는 라우팅 문제가 있는지 확인합니다. 클라이언트에서 서버에 ping을 수행 할 수 있습니까?

  3. 텔넷이 작동하지 않는 또 다른 이유는 서버가 잘못된 포트에 바인딩되어있을 수 있다는 것입니다. 기본값은 모든 인터페이스에 바인딩하는 것이지만 반드시 확인해야합니다. 유닉스 박스 또는 OSX를 사용하는 경우 netstat 명령을 사용하여 바인딩 할 포트를 확인할 수 있습니다. 다음 출력은 서버가 모든 인터페이스를 의미하는 *에 바인드되었음을 보여줍니다.

    $ netstat -an | grep 2222  
    tcp46  0  0 *.2222     *.*     LISTEN 
    
  4. 다른 아무것도 다음 텔넷 연결이있는 경우, 당신이 서버에 소켓을 닫는되지 않기 때문에 연결하는 다른 모든 telnet이와 클라이언트를 차단하는 것을 실현할 데 도움합니다.

일부 도움이 되길 바랍니다.

+0

이제 목적지에 연결할 수 없다고 말합니다. ipAddress : portNmumber –

+0

telnet이 방화벽의 일종이라고 말하면 서버가 작동하지 않습니다. 서버를 시작하고 로컬로 텔넷을 시도한 다음 텔넷을 시도해보십시오.하지만 가까운 네트워크에서 텔넷을 원격으로 시도하십시오. – Gray

관련 문제