当前位置:编程学习 > VB >>

Winsock外网连接,我这样算是打洞么?是不是有什么问题?

我在不在同一个局域网的两台电脑上分别建立了两个客户端:A端 和 B端

1.首先A和B分别向服务器C发送请求,C分别回应A和B,返回他们的ip和已打开的端口,使A和B都能知道自己和对方的IP和端口
  (IP_A Port_A)(IP_B Port_B)

2.A和B根据服务器C返回的ip和端口进行相互连接(以A为例):

    WinsockA.RemoteHost = IP_B
    WinsockA.RemotePort = Port_B
    WinsockA.Bind IP_A, Port_A


这样操作后,A和B仍然无法实现通信,请问我的问题出在哪里呢? --------------------编程问答-------------------- 内事不决,上:Baidu
外事不决,上:Google --------------------编程问答-------------------- 纠正一下,Bind那个地方,我用的是 WinsockA.Bind Port_A,帖子上写错了,不好意思
(但我怀疑这个地方Bind的对象好像还是局域网的IP,这样肯定无法通信的) --------------------编程问答--------------------
引用 2 楼 babycost 的回复:
纠正一下,Bind那个地方,我用的是 WinsockA.Bind Port_A,帖子上写错了,不好意思
(但我怀疑这个地方Bind的对象好像还是局域网的IP,这样肯定无法通信的)

需要网关映射端口,要取实际ip --------------------编程问答-------------------- 如果做端口映射,要返回A和B两个端的外网IP以及映射到这两个端的端口。如果获得的仍然是IP内网保留段的IP,则无意义。
实际上情况很复杂,P2P的书里介绍的内网两台主机点对点连接方法有一组,需要根据实际情况选择。 --------------------编程问答-------------------- 关注一下,楼主你做的软件是实现哪方面的应用啊 --------------------编程问答-------------------- 路由器穿透……需要在路由器上做端口映射或DMZ。首先要获得公网的ip --------------------编程问答-------------------- 我是要做软件,用到一个通信的功能,总不能要求用户自己在路由器上做端口映射吧,我只要简单的通信就可以 --------------------编程问答-------------------- qq怎么做的呢? --------------------编程问答-------------------- 有公网服务器,很好办啊,只要通过公网服务器获取每个客户端的外网ip,然后用此ip主动联络对方后即可通讯。
如果没有公网服务器,也只须一方开放端口,另一方主动联络开放端口的客户端后即可通讯。 --------------------编程问答-------------------- 要么建立vpn,要么通过服务器转发。反正,如果你电脑通过路由器连接的外网的话,外网要直接访问你的电脑就只能通过路由转发。即使你电脑开放了某个端口,如果外网上某个对这个端口的连接请求路由器不发送进来也联络不上。

请参阅nat方面是技术文章 --------------------编程问答-------------------- http://topic.csdn.net/u/20100424/15/34fce15c-7ec5-455c-8dfa-8e8713115b61.html?51958
参考下这个贴子 --------------------编程问答--------------------
引用 1 楼 veron_04 的回复:
内事不决,上:Baidu
外事不决,上:Google

还有一句: 房事不决上天涯 --------------------编程问答--------------------
引用 8 楼 dingyanwei 的回复:
qq怎么做的呢?


qq的客户端 在登陆的时候 会从本地配置文件里面获取其服务器IP地址,然后发送请求连接,看哪个服务器先响应就连接哪个服务器
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,