VB如何写内外网聊天软件
当一个公网与N个子网聊天时子网是如何找到过路由器的子网(局网)公网主机如何找到内网主机用VB如何写这样的程序...
当一个公网与N个子网聊天时 子网是如何找到过路由器的子网(局网) 公网主机如何找到内网主机 用VB如何写这样的程序
展开
3个回答
2014-01-24
展开全部
这个分几种情况的
先说说前提
聊天软件需要一个服务器存放客户端列表吧
只要客户端是在线的,那客户端与服务端必须是处于连接状态(这样服务器就可以作为客户端的中间人)
在这里Server(为服务端),Client A(客户端1)Client B(客户端2)
1,Client A是外网,Client B是外网 这种情况很简单,Client A只要从服务器端得到Client B的信息(IP与登记的端口)就能够建立连接
2,Client A是外网,Client B是内网 这种情况稍复杂,Client A连接Client B会失败,这时,Client A向Server发出请求,这时,Server通知Client B,让Client B连接Client A.. 因为Client A是外网机器,所以这样也就建立连接了
3,Client A与Client B都在内网,p2p关键是在这里,
当Client A连接Client B失败,Client A向Server发出请求,Server通知Client B对Client A进行连接,这时Client B他能连接上Client A!但是,如果刚才Client A没有连接Client B,那现在的Client B就连接不上Client A!反之:这里重新再来啊,Client B连接Client A失败,Client B向Server发出请求,Server通知Client A连接Client B,这时Client A也能连接上Client A!
在这里需要说一下NAT(网络地址转换),就是当内网用户连接外网时,NAT可以可以将内网地址转换成公网的IP地址与外网进行通信,但外网有数据返进入内网时,有两种可能(如果前面内网有向这个外网地址发送过数据包,那么NAT会把这个外网的连接转换为刚刚发送过数据包的内网地址)
再回来说前面的,Client A为什么会连接Client B失败?,因为Client A的数据包到达Client B的NAT时被丢弃了,而这时,Client B为什么又如何能连接Client A成功呢,因为当Client B的数据包到达Client A的NAT时,NAT检测到刚刚Client A有发送过数据包到Client B,这个时候NAT会将这个连接转换到Client A上去... 这样就连接成功了
说着我都有点晕了.不知道你看着会不会晕..- -!看着晕慢慢看吧..CSDN中有VB版的UDP打洞例子,你找下...
先说说前提
聊天软件需要一个服务器存放客户端列表吧
只要客户端是在线的,那客户端与服务端必须是处于连接状态(这样服务器就可以作为客户端的中间人)
在这里Server(为服务端),Client A(客户端1)Client B(客户端2)
1,Client A是外网,Client B是外网 这种情况很简单,Client A只要从服务器端得到Client B的信息(IP与登记的端口)就能够建立连接
2,Client A是外网,Client B是内网 这种情况稍复杂,Client A连接Client B会失败,这时,Client A向Server发出请求,这时,Server通知Client B,让Client B连接Client A.. 因为Client A是外网机器,所以这样也就建立连接了
3,Client A与Client B都在内网,p2p关键是在这里,
当Client A连接Client B失败,Client A向Server发出请求,Server通知Client B对Client A进行连接,这时Client B他能连接上Client A!但是,如果刚才Client A没有连接Client B,那现在的Client B就连接不上Client A!反之:这里重新再来啊,Client B连接Client A失败,Client B向Server发出请求,Server通知Client A连接Client B,这时Client A也能连接上Client A!
在这里需要说一下NAT(网络地址转换),就是当内网用户连接外网时,NAT可以可以将内网地址转换成公网的IP地址与外网进行通信,但外网有数据返进入内网时,有两种可能(如果前面内网有向这个外网地址发送过数据包,那么NAT会把这个外网的连接转换为刚刚发送过数据包的内网地址)
再回来说前面的,Client A为什么会连接Client B失败?,因为Client A的数据包到达Client B的NAT时被丢弃了,而这时,Client B为什么又如何能连接Client A成功呢,因为当Client B的数据包到达Client A的NAT时,NAT检测到刚刚Client A有发送过数据包到Client B,这个时候NAT会将这个连接转换到Client A上去... 这样就连接成功了
说着我都有点晕了.不知道你看着会不会晕..- -!看着晕慢慢看吧..CSDN中有VB版的UDP打洞例子,你找下...
2014-01-24
展开全部
苏亚星教学软件
也可以用WINDOWS自带的会议通话软件
也可以用WINDOWS自带的会议通话软件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-24
展开全部
你可以去网上查下 vb 的相关 winsocket编程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询