使用Java Socket实现广域网通信

Jarvis_Chen 2011-10-06 11:07:59
感谢你浏览我的问题,情况是这样的,我用Socket和ServerSocket实现了一个局域网通信的程序,最开始时服务端的IP(在我的电脑上)是192.168.2.3,端口号是7788,这个在局域网内的不同机器上可以进行通信。

现在我把服务端移到一台主机上,因为我们实验室有一台主机放着一个网站,所以是24小时开着的,网址我不写了,Socket连接时我使用的是

InetAddress.getByName(/*这里是网址*/);

端口号仍为7788不变。重新编译后,我在主机上运行服务端,正常运行,然后在自己的电脑上运行客户端,连接正常,我使用ping该网址时也没有发生丢包现象。

但是在我寝室的电脑上运行客户端时却无法连接至客户端,提示“连接超时”,并且ping该网址时数据%100丢失,而浏览器仍能打开该网址。

希望我把问题描述清楚了,简单地说,局域网内能连接主机,但外网却不能。

我试过让主机的防火墙允许7788号端口入站,问题仍未解决,希望大家能帮忙想想办法,是不是我还有哪个地方有疏漏?
谢谢!
...全文
518 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
小绵羊 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jarvis_chen 的回复:]
引用 16 楼 x19881216 的回复:

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

谢谢你的回复,请问服务器的IP段限制怎么查看?因为用独立的IP(客户端和服务端均不经过路由)也无法连接服务器,就说明不是路由的原因,可能的确是因为服务器限制了某个IP段的访问,但用浏览器为什么能访问该域名呢?
[/Quote]
。。。额方便把网址发我瞧瞧么,这个很难知道是什么问题
Jarvis_Chen 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 x19881216 的回复:]

服务器有没有IP段的限制之类的,再就是他的telnet连接对不对
[/Quote]
谢谢你的回复,请问服务器的IP段限制怎么查看?因为用独立的IP(客户端和服务端均不经过路由)也无法连接服务器,就说明不是路由的原因,可能的确是因为服务器限制了某个IP段的访问,但用浏览器为什么能访问该域名呢?
Jarvis_Chen 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 x19881216 的回复:]
服务器是单网卡还是多网卡,
实验室的电脑连接服务器是用的什么方式,局域网方式还是广域网方式的
[/Quote]

我不知道怎么判断服务器是单网卡还是多网卡的,是不是运行ipconfig /all就能查看呢?如果你需要这个信息的话我可以贴出来。

实验室的电脑共用一个IP,服务器电脑独立一个IP,就是说服务器的电脑是不经过路由的。这两个IP只有最后一位是不同的,一个是*.*.*.226,一个是*.*.*.228。

今天早上我在寝室的电脑上将网线不通过路由直接连到电脑上,此时它不与其他电脑共享IP,运行该程序后仍不能连接,这个现象让我很疑惑,因为现在服务器和客户端都用的是独立的IP,可为什么还是无法通信呢?

这个问题已经困扰了我两天了,一直没研究明白,希望能继续得到大家的回复,早点把问题解决,谢谢!
Jarvis_Chen 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 x19881216 的回复:]
方便把网址发我瞧瞧么,这个很难知道是什么问题
[/Quote]
感谢你热心的回答,本来是想给你发消息的,但CSDN不允许我这么做,只好在这里贴了。网址是up.whut.edu.cn,服务端是24小时一直开着的。如果需要的话,我可以把我的程序发到你的邮箱中。谢谢你的帮助!
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
服务器有没有IP段的限制之类的,再就是他的telnet连接对不对
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 x19881216 的回复:]

外网连不上就是端口没开放
[/Quote]
之前提示不能连接到主机是因为我的服务端没有打开,我的疏忽,现在打开后运行该命令能成功连上服务器,但是我让寝室的同学(他们在另一个局域网中,其外网IP是183.*.*.224)运行该命令时却提示连接不上,这是为什么呢?是主机设置的原因,还是客户端设置的原因呢?希望有大侠能给点建议,感激不尽!
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jarvis_chen 的回复:]
引用 11 楼 x19881216 的回复:

如果服务器是在路由后面的话,需要把路由的端口映射给服务器。

你用 telnet 域名 7788 试试看有没有反应

服务器的IP就是外网IP,它没有经过路由。
telnet 域名 7788
运行提示:不能打开到主机的连接,在端口7788连接失败。

我已经新建入站规则,允许端口7788的连接,可是为什么还会出现这个提示呢?
[/Quote]
服务器是单网卡还是多网卡,
实验室的电脑连接服务器是用的什么方式,局域网方式还是广域网方式的
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 x19881216 的回复:]

如果服务器是在路由后面的话,需要把路由的端口映射给服务器。

你用 telnet 域名 7788 试试看有没有反应
[/Quote]
服务器的IP就是外网IP,它没有经过路由。
telnet 域名 7788
运行提示:不能打开到主机的连接,在端口7788连接失败。

我已经新建入站规则,允许端口7788的连接,可是为什么还会出现这个提示呢?
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
在服务器防火墙的入站规则中允许端口7788连接

还要允许本机程序监听7788端口
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jarvis_chen 的回复:]

引用 7 楼 x19881216 的回复:

服务器需要开放7788端口,而且路由器要做端口映射。

您是不是指,在服务器防火墙的入站规则中允许端口7788连接,然后在客户端机器的路由上做端口映射?
[/Quote]

如果服务器是在路由后面的话,需要把路由的端口映射给服务器。

你用 telnet 域名 7788 试试看有没有反应
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
外网连不上就是端口没开放
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 x19881216 的回复:]

服务器需要开放7788端口,而且路由器要做端口映射。
[/Quote]
您是不是指,在服务器防火墙的入站规则中允许端口7788连接,然后在客户端机器的路由上做端口映射?
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
刚刚查看了一下外网IP,主机的IP就是外网IP,是*.*.*.228,实验室其他电脑的IP是内网IP,对应的外网IP相同,都是*.*.*.226。希望得到大家的回复,谢谢!
小绵羊 2011-10-06
  • 打赏
  • 举报
回复
服务器需要开放7788端口,而且路由器要做端口映射。
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ygycomon 的回复:]

同意,能访问网页只能说明服务器的电脑允许你访问80端口,但是它具体的拦截措施金可能就会拦截你的ping或者socket请求(其实这个很正常,你能相信一台服务器让你随便ping吗。。。)
[/Quote]
很有道理,那请问,我该怎么做才能让其他局域网的电脑也能通过这个程序进行通信呢?现在只有实验室里的电脑间能通信。希望得到你的回复,谢谢!
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huxiweng 的回复:]
你的程序是BS还是CS的?一般Tomcat用来发布BS结构的程序
[/Quote]
CS模式的,我把Server放在主机上,Client放在实验室的其他电脑(同一局域网)上,均能通信,但是放到寝室的电脑上就连接不上了。寝室的电脑是在另一个局域网中。
致知Fighting 2011-10-06
  • 打赏
  • 举报
回复
同意,能访问网页只能说明服务器的电脑允许你访问80端口,但是它具体的拦截措施金可能就会拦截你的ping或者socket请求(其实这个很正常,你能相信一台服务器让你随便ping吗。。。)

teemai 2011-10-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jarvis_chen 的回复:]

请问1楼,用Tomcat能发布这种ServerSocket的java程序吗?
[/Quote]你的程序是BS还是CS的?一般Tomcat用来发布BS结构的程序
Jarvis_Chen 2011-10-06
  • 打赏
  • 举报
回复
请问1楼,用Tomcat能发布这种ServerSocket的java程序吗?
teemai 2011-10-06
  • 打赏
  • 举报
回复
一般的服务器为了安全,会使用各种手段的,不仅仅是防火墙或者端口限制。可以联系服务器管理员。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧