super-dk 2014-12-02 02:01 采纳率: 0%
浏览 3124

Java Socket 外网连不上但是内网可以。 ADSL提供网络,没有路由器

各位朋友,问题较长,请耐心看我来详细描述一下:
服务端是一个JavaWEB的网站项目,里面有ServerSocket,用来接受客户端数据。客户端是Android程序,里面启动Socket后会循环发送数据。我在运行的时候用的是家里的电脑和自己的手机,如果都在一个局域网里(手机用WIFI)数据传输没有问题,如果切换到外网后(ADSL出来的网线连接电脑,手机用3G)用我电脑cmd命令ipconfig查到的PPP ip输入到手机浏览器中可以访问JavaWEB的网站,也就是说可以ping通这个ip地址。但是用手机发送socket数据到这个ip时,服务端会在accept()一直阻塞。我也想过可能是端口没有开放,但是如果我把Android端的socket不进行循环发送数据时(只发送一条数据)过20秒左右服务端会报错 java.net.SocketException: Connection reset,报错的地方是服务端接收到客户端数据后进行读取操作的一步(下面代码最后一行会报错)
Socket s = new ServerSocket(7777).accept();
InputStream in = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String response = br.readLine();
用DEBUG查看会发现报错前s中有客户端的信息,比如客户端的ip地址和发送端口等。这是不是也可以证明服务器的端口已经开放。如果排出了端口和ip地址的问题。那我就彻底费解了。
还请各位好心的有经验的朋友们帮我参考一下,到底如何解决这个问题,谢谢大家
因为现在已经没有路由器所以应该不用端口转发,之前用路由器的时候也试过端口转发,是不行的,后来直接把路由器撤了。

  • 写回答

5条回答 默认 最新

  • super-dk 2014-12-02 03:03
    关注

    没有人么~~~

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题