VB WINSOCK TCP UDP穿透怎么实现
我正在做一个多用户通讯软件,可是内网和内网用户,怎么才能直接连接咧?
思路是这样的:
服务器S----有一个外网的IP地址
用户A------假如是北京内网用户(网吧)
用户B------假如是河南内网用户(网吧)
1.首先服务器监听IP和端口
2.用户A连接服务器
3.用户B连接服务器
4.服务器获得用户A和用户B的真实地址和端口
5.服务器告诉A和B双方的真实IP和端口
6.到这里就不知道怎么让用户A和用户B直接连接了,因为此时用户A或B的WINSOCK端口处于和服务器S的连接状态,怎么才能让A和B在不端开连接或端开连接但端口号不变的情况下让A和B能直接进行连接!
TCP不行的话,UDP可以吗? 具体怎么实现? 怎么才能让多个用户同时能发消息给A,并且A能收到!
希望高手解答,如果有办法实现,本人愿意出100-300元买此实现方法!本人很穷,但很敬业!希望大家帮帮忙!在这里谢谢大家了!
[解决办法]
你要做什么啊?
你想实现用户A和用户B的通讯可以通过服务器中专
[解决办法]
如果你有外网固定IP的服务器,tcp,udp都可以实现多用户发数据给A
[解决办法]
可以联系我:QQ:15298196
[解决办法]
上面的朋友加我QQ: 593822895 谢谢
[解决办法]
上上面的朋友加我QQ:767431339 谢谢,我也想学
[解决办法]
服务器中传的话服务器的处理能力直接决定了整套系统的处理能力
其实楼主应该找找UDP/TCP打洞的方案,不过UDP好找,TCP不好找.
以前QQ没有掌握TCP打洞时也比较恼火,记得那个"通过服务器中传"的提示不?呵呵.
[解决办法]
我要的就是NAT穿透呀```不是要服务器中转的
[解决办法]
需要api hook和了解校验合的计算,挺简单的没什么复杂
[解决办法]
楼上的```说了等于没说```具体点啊```
[解决办法]
如下思路,看一下是否可行:
服务器知道两用户的IP地址后,发消息给客户端A,将用户B的客户端的IP地址告诉客户端A,让客户端A再直接连接客户端B。
[解决办法]
楼上的思路是正确的``但实际上做不到```因为此时B的端口和S是连接的```不能进入监听状态
[解决办法]
可否再分配一个端口,与每个用户连接都另分配一个端口。
[解决办法]
帮顶!只用过绑定端口UDP协议直接发送消息
[解决办法]
可再分配``但NAT路由几乎都是随机分配的端口``不可能猜到!
[解决办法]
记得有个UDP穿透的论文,你找找看
网上好象没有成品源代码
写是肯定有人写出来,但我个人认为不会有谁愿意将此技术免费发布到网上的.
[解决办法]
我都说了方法,你也了解思路干嘛不自己动手啊
[解决办法]
MARK
[解决办法]
有外网服务端的话,A、B端可以直接主动连接服务器,
然后再服务端再通过这两个连接作中转
[解决办法]
其实只是 一层纸 UDP操作很简单 。。
我继续你的步骤 说如何使用udp打洞
5.服务器告诉A和B双方的真实IP和端口
6.到这里就不知道怎么让用户A和用户B直接连接了,因为此时用户A或B的WINSOCK端口处于和服务器S的连接状态,怎么才能让A和B在不端开连接或端开连接但端口号不变的情况下让A和B能直接进行连接!
6.首先 a向b的真实ip和端口 发送一条空命令
7.首先 b向a的真实ip和端口 发送一条空命令
8.a可以向b发送真实信息了 ,b也可以向a发送信息了
[解决办法]
内网的路由如何映射..没有把路由映射到你的机器上怎么传输...穿透....还是个问题
[解决办法]
学习了。。。苦恼中。。同样的问题
------解决方案--------------------
一个端口也可以接受多个连接啊。。。不是有个REQUESTID吗,,,用到时来回切换就行了吧
[解决办法]
呵呵,p2p技术,没那么复杂,我说个简单的过程给你理解一下。
比如你和你的朋友都是通过路由器在各自的家上网,这个时候,你朋友在家启动了一个UDP的服务程序。
然后他就用那个UDP服务尝试发了一条信息给一台公网服务器,这样,他变可以看到他的公网 IP 地址和被路由映射过的公网通讯端口,然后他就通过电话告诉你服务器识别出来的IP和端口。这时候你也启动同样的UDP服务程序,用同样的方法得到自己在公网上的IP地址和被映射的服务端口号。
关键步骤开始了:
这个时候你不停的向你朋友告诉你的IP和端口发数据,比如"OK"字符,记住是"不停"的发(最好用程序用死循环的方式做),当然,这个时候你朋友是收不到你发的信息的,当你的程序不停的发数据的时候,你打个电话,让你的朋友向你的公网IP地址和端口发一个数据,比如"yes"或别的什么东西,这时候就完成了整个打洞过程,你们双方都收到了对方的数据。
其实原理和步骤很简单,就是双方都需要通过一台公网服务器得知自己的公网IP地址和被映射过的服务端口,然后其中一方不停的给对方发数据,这个时候,只要另一方也向自己发数据,双方的通道便可打通了。
当然把这个过程写成程序也是很简单的,你就自己实验一下吧。
[解决办法]
可以考虑用服务器来做中转
[解决办法]
是哦,看看时间还真老,呵呵
[解决办法]
这么老的帖子 都发觉出来了 让我回想了当年
[解决办法]