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

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
    关注

    没有人么~~~

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?