怎么写一个socket编程,不管是udp的还是tcp的,可以不在同一个局域网中通信?
以前做练习的时候,都是同一个网段,同一个局域网中的没连接外网,,现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网,都不在公网中,谁给提供...
以前做练习的时候 ,都是同一个网段,同一个局域网中的 没连接外网,,
现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网 ,都不在公网中,
谁给提供一下思路??
例如一个 在中国 ,一个在美国 两个怎么通信??需要在公网中弄个服务器? 展开
现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网 ,都不在公网中,
谁给提供一下思路??
例如一个 在中国 ,一个在美国 两个怎么通信??需要在公网中弄个服务器? 展开
3个回答
推荐于2017-11-26
展开全部
网络通讯很简单的道理 通许必须有一方是公网地址 这个所谓的公网地址简单理解就是互联网上公开的地址,能够背直接访问的IP地址
那么你如果想实现中国到美国的通讯(下面简称2方通讯)方法有一下几种
方法1:
中国这边或者美国那边至少一方是具有公网IP地址的 具有公网地址的作为服务端 另外一方作为客户端连接(具体实现就是公网一方监听自己的公网地址上的某个端口 客户端直接连接对方的公网地址跟端口即可)( A<=====>B(公网地址) )
方法2:
2方都具有公网地址 那就更简单 互相连接对方的公网地址跟端口即可(A(公网)<======>B(公网))
方法3:
2方都没有公网地址(但是其中一方或者双方都能在路由器上做端口映射 这个问题就转化成了方法2 或者方法1)(A(端口映射)<===========B)
方法4:
2方都没有公网地址也无法做端口映射 这个时候就要假设一个中转的服务器 2方都去连接那个中转服务器 通过服务来转发消息(A(内网)<===============(消息中转服务器)============>B(内网))
目前QQ就是用的这样的消息传送方式
那么你如果想实现中国到美国的通讯(下面简称2方通讯)方法有一下几种
方法1:
中国这边或者美国那边至少一方是具有公网IP地址的 具有公网地址的作为服务端 另外一方作为客户端连接(具体实现就是公网一方监听自己的公网地址上的某个端口 客户端直接连接对方的公网地址跟端口即可)( A<=====>B(公网地址) )
方法2:
2方都具有公网地址 那就更简单 互相连接对方的公网地址跟端口即可(A(公网)<======>B(公网))
方法3:
2方都没有公网地址(但是其中一方或者双方都能在路由器上做端口映射 这个问题就转化成了方法2 或者方法1)(A(端口映射)<===========B)
方法4:
2方都没有公网地址也无法做端口映射 这个时候就要假设一个中转的服务器 2方都去连接那个中转服务器 通过服务来转发消息(A(内网)<===============(消息中转服务器)============>B(内网))
目前QQ就是用的这样的消息传送方式
更多追问追答
追问
需要去买一个公网的ip地址吗???
追答
一方能做端口映射是最好也是最便宜的做法了 2边都没办法做的话 只能购买一个很便宜的主机空间作为中转服务器了
有一个中转服务器可以实现离线留言的功能
展开全部
主要是利用了路由器的映射关系,而两个路由器之间的通讯对你是没有关系的,也就是黑盒原理!你只要有一个公网的服务器就可以,1、一种是客户端连接服务器进行通讯,服务器转发2、是服务器把两个通讯客户端的路由映射发给对方,并维护这个路由器映射,这样两个客户端可以相互通讯!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要有一个登陆服务器,不管客户端在哪里登陆后,会在服务器登记其IP和端口,其用户端需要联系对方时,可将消息现发给服务器,由服务器转发对方;或者从服务器获取对方的ip和端口,直接发送过去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询