感谢你浏览我的问题,情况是这样的,我用Socket和ServerSocket实现了一个局域网通信的程序,最开始时服务端的IP(在我的电脑上)是192.168.2.3,端口号是7788,这个在局域网内的不同机器上可以进行通信。现在我把服务端移到一台主机上,因为我们实验室有一台主机放着一个网站,所以是24小时开着的,网址我不写了,Socket连接时我使用的是InetAddress.getByName(/*这里是网址*/);端口号仍为7788不变。重新编译后,我在主机上运行服务端,正常运行,然后在自己的电脑上运行客户端,连接正常,我使用ping该网址时也没有发生丢包现象。但是在我寝室的电脑上运行客户端时却无法连接至客户端,提示“连接超时”,并且ping该网址时数据%100丢失,而浏览器仍能打开该网址。希望我把问题描述清楚了,简单地说,局域网内能连接主机,但外网却不能。我试过让主机的防火墙允许7788号端口入站,问题仍未解决,希望大家能帮忙想想办法,是不是我还有哪个地方有疏漏?
谢谢!

解决方案 »

  1.   

    请问1楼,用Tomcat能发布这种ServerSocket的java程序吗?
      

  2.   

    你的程序是BS还是CS的?一般Tomcat用来发布BS结构的程序
      

  3.   

    同意,能访问网页只能说明服务器的电脑允许你访问80端口,但是它具体的拦截措施金可能就会拦截你的ping或者socket请求(其实这个很正常,你能相信一台服务器让你随便ping吗)
      

  4.   

    CS模式的,我把Server放在主机上,Client放在实验室的其他电脑(同一局域网)上,均能通信,但是放到寝室的电脑上就连接不上了。寝室的电脑是在另一个局域网中。
      

  5.   

    刚刚查看了一下外网IP,主机的IP就是外网IP,是*.*.*.228,实验室其他电脑的IP是内网IP,对应的外网IP相同,都是*.*.*.226。希望得到大家的回复,谢谢!
      

  6.   


    如果服务器是在路由后面的话,需要把路由的端口映射给服务器。你用  telnet 域名 7788  试试看有没有反应
      

  7.   

    服务器的IP就是外网IP,它没有经过路由。
    telnet 域名 7788
    运行提示:不能打开到主机的连接,在端口7788连接失败。我已经新建入站规则,允许端口7788的连接,可是为什么还会出现这个提示呢?
      

  8.   

    服务器有没有IP段的限制之类的,再就是他的telnet连接对不对
      

  9.   


    我不知道怎么判断服务器是单网卡还是多网卡的,是不是运行ipconfig /all就能查看呢?如果你需要这个信息的话我可以贴出来。实验室的电脑共用一个IP,服务器电脑独立一个IP,就是说服务器的电脑是不经过路由的。这两个IP只有最后一位是不同的,一个是*.*.*.226,一个是*.*.*.228。今天早上我在寝室的电脑上将网线不通过路由直接连到电脑上,此时它不与其他电脑共享IP,运行该程序后仍不能连接,这个现象让我很疑惑,因为现在服务器和客户端都用的是独立的IP,可为什么还是无法通信呢?这个问题已经困扰了我两天了,一直没研究明白,希望能继续得到大家的回复,早点把问题解决,谢谢!
      

  10.   

    谢谢你的回复,请问服务器的IP段限制怎么查看?因为用独立的IP(客户端和服务端均不经过路由)也无法连接服务器,就说明不是路由的原因,可能的确是因为服务器限制了某个IP段的访问,但用浏览器为什么能访问该域名呢?
      

  11.   

    感谢你热心的回答,本来是想给你发消息的,但CSDN不允许我这么做,只好在这里贴了。网址是up.whut.edu.cn,服务端是24小时一直开着的。如果需要的话,我可以把我的程序发到你的邮箱中。谢谢你的帮助!