服务器前面如果有防火墙的话,那么防火墙上必须要打开5555端口,这样才能让客户端发起的连接请求和服务器的返回包通过。UDP也是一样。

解决方案 »

  1.   

    如果你用到了5556端口,比如服务器通过5556端口来回复客户端,那么你同样要保证这样的包能通过防火墙,也就是要允许源端口为5556的TCP包通过。
      

  2.   

    那服务器只能放在防火墙之外了?如果用UDP是不是可以只打开一个监听端口如5555?
      

  3.   

    用于监听的Socket的端口需要在防火墙中开放。回复的Socket不需要占用端口呀!
      

  4.   

    to superct(圣堂·天子):
    我Socket不是很熟,但我在<<java编程思想>>中了解道
    回复的Socket也是要占用端口的。如果是这样防火墙怎么打开端口?因为回复的Socket的端口是动态的?
      

  5.   

    假如你对iptables或者ipchians熟悉,你就知道什么时候firewall。我对防火墙的理解是,一种种规则而已。客观的讲,socket和防火枪没有任何特殊的。firewall一般会不允许怪异(非常用)的端口通信。
      

  6.   

    没有办法,一定要开,除非你用HTTP通道,这是SOCKET解决不了的东西
      

  7.   

    你可以用sockcap来解决,icq和oicq都是用他来解决的.
      

  8.   

    服务器端:如果你的程序监听TCP5555端口,那在防火场的规则里要设置对于从这个端口经过的InBound数据为ACCEPT;
    客户端:防火场相应地设置OutBound向TCP5555端口的数据为ACCEPT;至于服务器端是使用哪个端口跟客户端通信,这是随机的,一般不需要我们去管(一般的防火场都没有提供这样的规则)更详细的,我想应该去网络管理那版去问问。