怎么写一个socket编程,不管是udp的还是tcp的,可以不在同一个局域网中通信?

以前做练习的时候,都是同一个网段,同一个局域网中的没连接外网,,现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网,都不在公网中,谁给提供... 以前做练习的时候 ,都是同一个网段,同一个局域网中的 没连接外网,,
现在想实现一个和qq一样的socket编程,一个在另一个内网中,另一个在那边的内网 ,都不在公网中,
谁给提供一下思路??
例如一个 在中国 ,一个在美国 两个怎么通信??需要在公网中弄个服务器?
展开
 我来答
匿名用户
推荐于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就是用的这样的消息传送方式
更多追问追答
追问
需要去买一个公网的ip地址吗???
追答
一方能做端口映射是最好也是最便宜的做法了  2边都没办法做的话 只能购买一个很便宜的主机空间作为中转服务器了
有一个中转服务器可以实现离线留言的功能
危娥s7
2014-01-11 · TA获得超过220个赞
知道答主
回答量:175
采纳率:0%
帮助的人:89.3万
展开全部
主要是利用了路由器的映射关系,而两个路由器之间的通讯对你是没有关系的,也就是黑盒原理!你只要有一个公网的服务器就可以,1、一种是客户端连接服务器进行通讯,服务器转发2、是服务器把两个通讯客户端的路由映射发给对方,并维护这个路由器映射,这样两个客户端可以相互通讯!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友33a9cfa10
2014-01-13 · TA获得超过511个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:245万
展开全部
需要有一个登陆服务器,不管客户端在哪里登陆后,会在服务器登记其IP和端口,其用户端需要联系对方时,可将消息现发给服务器,由服务器转发对方;或者从服务器获取对方的ip和端口,直接发送过去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式