JAVA Socket如何访问公网IP

rockets311 2012-02-13 08:15:08
例如同在本机或同在一个局域网的话:服务端:
ServerSocket server = new ServerSocket(8888);
……
客户端
Socket socket = new Socket("127.0.0.1",8888);
//或者Socket socket = new Socket("192.168.0.111",8888);
……
这样即可。
但是如果不在本机也不在一个局域网中,服务端在公网呢?
代码该怎么写呢?
...全文
4336 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockets311 2012-02-13
  • 打赏
  • 举报
回复
测试通过,谢谢你!也谢谢各位了!结贴!
ldhbq2015 2012-02-13
  • 打赏
  • 举报
回复
是的,
rockets311 2012-02-13
  • 打赏
  • 举报
回复
假如服务端的路由器的特定端口如:2222映射了局域网如:192.168.0.120,
知道了它的公网的IP如:112.120.133.62,那么,服务端是否应该这样写:
ServerSocket server = new ServerSocket(2222);
……
客户端:Socket socket = new Socket("112.120.133.62",2222);
……
周靖峰 2012-02-13
  • 打赏
  • 举报
回复
应该是一样的吧
ssyliusha 2012-02-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 aesir2012 的回复:]
127.0.0.1是本地
192.168.0.111是c类私有地址内部局域网用的
想知道自己的外网ip 可以访问ip168查看
你只用把Socket socket = new Socket("外网ip",8888);改了就行了
[/Quote]

如果不在服务器时局域网 不是单线的,,, 那就必须得在路由器上映射你的ip。。 不然你查到了ip还是没用。。。 反正你本机上能够ping通外网ip 就肯定可以连接通。。
尼伯龍根 2012-02-13
  • 打赏
  • 举报
回复
127.0.0.1是本地
192.168.0.111是c类私有地址内部局域网用的
想知道自己的外网ip 可以访问ip168查看
你只用把Socket socket = new Socket("外网ip",8888);改了就行了
ssyliusha 2012-02-13
  • 打赏
  • 举报
回复
路由器上映射你局域网ip。。。这方法是修改路由器属性。。 跟你代码没关系。。
ssyliusha 2012-02-13
  • 打赏
  • 举报
回复
局域网的话 就需要在 路由器上 映射你的局域网ip。。。。
具体办法去百度查吧,,我也忘记了。。

映射完成 外网就能够访问了。。。
你可以在自己机器上 cmd里面 ping ip(这个ip就是外网的局域网ip) 如果ping通了 就ok了。。
rockets311 2012-02-13
  • 打赏
  • 举报
回复
如果那个外网也在一个另一个局域网里。这样可以吗?
ssyliusha 2012-02-13
  • 打赏
  • 举报
回复
Socket socket = new Socket("127.0.0.1",8888);
"127.0.0.1" 这个是连接本地服务器的ip

Socket socket = new Socket("192.168.0.111",8888);
"192.168.0.111" 这个是连接局域网的服务器的ip

你只需要知道你要连接的外网ip 就可以了。。。 写法一样的。。没有任何区别~~ 只是速度不会那么快。。
rockets311 2012-02-13
  • 打赏
  • 举报
回复
貌似有点区别吧!
aotian16 2012-02-13
  • 打赏
  • 举报
回复
没区别吧

62,634

社区成员

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

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