2011-11-25 33 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到主机和端口时,在同一个盒子和另一个盒子上,你会得到什么? 'telnet 192.168.0.71 2222' –

回答

0

所以我试了你的代码在我的两个盒子和远程连接工作正常。大量的不错的评论,但我想我会写出来的一些事情的答案,尝试:

  1. 它已经暗示,你已经能够在本地远程连接到服务器,看看格式字符串。精细。你是否也能够使用从远程客户端到服务器的telnet,并且也是请参阅格式字符串?

  2. 如果远程telnet不起作用,那么我会检查是否有防火墙或其他路由问题。你能从客户端ping服务器吗?

  3. telnet可能无法正常工作的另一个原因是您的服务器可能绑定了错误的端口。默认是绑定到所有接口,但只是为了确保,你应该检查。如果您位于unix box或OSX上,则可以使用netstat命令查看要绑定的端口。以下输出显示服务器绑定到*,这意味着所有接口。

    $ netstat -an | grep 2222  
    tcp46  0  0 *.2222     *.*     LISTEN 
    
  4. 如果不出意外的帮助进而实现,如果你有一个telnet连接,它会阻止所有其他Telnet方式登录和客户端连接,因为你不关闭服务器上的插座。

希望其中的一些帮助。

+0

现在它说无法连接到目标ipAddress:portNmumber –

+0

如果telnet说他们某种防火墙阻碍了你的服务器或你的服务器不工作。启动你的服务器,在本地尝试telnet,尝试telnet off box但是在关闭的网络上,远程尝试telnet。 – Gray

相关问题