Java如何实现不同局域网TCP通信+群聊(云服务器实现)
他这用的就是socket bind那几步,纯纯的BIO
(253条消息) Java如何实现不同局域网TCP通信+群聊(云服务器实现)_java不同局域网_尼古拉斯.鸣的博客-CSDN博客
3.解决方案
通过分析,我们的解决方法有多种
1.两台电脑在同一局域网(这不是我们想要的)
将我女朋友的电脑拿来和我一起连一个无线网,这样她的电脑就可以发现我的电脑的IP,然后就可以正常连接服务器了。
2.修改服务器主机路由器中的映射关系,将内网映射到外网(不是我们想要的)
该方法我没试过,因为我不知道我宿舍的路由器登录密码。。。
以下简单说原理:
上面介绍了NAT,如果你在百度搜IP,你会发现百度的IP地址和ipconfig出来的IP地址并不一样。
百度的IP地址才是你真正的上网用的IP地址也是路由器的公有IP地址。
修改路由器的映射关系,当别人访问路由器的公网IP的端口号时,路由器会自动映射到服务器主机的端口号上,这样也实现了我们的目的,但是要让别人修改用户端Socket的绑定IP为路由器的公有IP后运行代码。
如果每一次连接同一个路由器,路由器可能给我们分配不一样的IP地址,这是我们要去动态映射我们的服务器IP(我没接触过,但是看到过要用‘花生壳’这个软件你们可以自己研究)
如果服务端每次连接不同的路由器,我们甚至要改变客户端Socket绑定的IP,这就更麻烦了!
如果服务器端关闭,那么其他所有客户端的Socket都会断开连接,况且谁的电脑也不会一直开着,这样就会想到云服务器啊,它就会一直开着。
具体的修改映射关系的方法:如何将内网ip映射到外网_xiaonuo911teamo的博客-CSDN博客_将局域网ip映射到公网
3.云服务器
我用的是阿里的服务器,大家也可以用其他的华为啥的。
注册阿里云免费领云服务器_云服务器ECS_阿里云 (aliyun.com)
————————————————
版权声明:本文为CSDN博主「尼古拉斯.鸣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45909571/article/details/123818361
不在同个局域网下,客户端和服务端怎么交互?(一个没改tomcat默认地址引发的惨案)
(253条消息) 不在同个局域网下,客户端和服务端怎么交互?_泼夫的博客-CSDN博客
Java Socket 内网和外网之间的通信
大家都知道一般我们编写的关于网络的代码是在局域网下测试。最近我尝试了下将自己写的聊天室在网络上(外网上)进行通信测试,好比如qq。首先给大家普及下基本网络知识
首先给大家普及下基本网络知识
内网 : 也就是不和互联网相连的网络。也就是我们常说的局域网。而内网IP又分为3种:第一种10.0.0.0~10.255.255.255,第二种172.16.0.0~172.31.255.255,第三种192.168.0.0~192.168.255.255 其它的IP你就认为是外网IP好了
外网 :也是互联网。我常常通过输入网址,进入网站。
我们的计算机自身就是一个局域网。我们编写的程序一般是在局域网下测试。
实现方案
1、Server方在外网,Client方在内网,那么可以直接通过外网IP连接,不需要任何映射
2、Server方在内网,Client方不论在其他内网还是在外网,都需要Server方的监听端口有被外网访问的权限,可以通过端口映射的方式实现,如果没有自己的外网服务器做端口映射的话,建议你直接使用花生壳软件(摘自如果可以我愿争取的博客)
以聊天室为例。我们编写了服务器和客户机。当服务器已经在外网情况下。我们的客户机直接可以socket连接。
当我们的服务器和客户机都是初始情况,seriver还在内网(局域网)client在内网(或者外网)下我们需要先把服务器置于外网。让外界可以通过ip地址(网址)可以访问状态。比如外界访问了 103.46.129.43(一个网址ip地址)时。这是我们通过端口映射方式让它直接连接到我们的服务器。如图所示
————————————————
版权声明:本文为CSDN博主「杨涛的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42034205/article/details/88427169