TCP真的可以打洞?

今天又尝试了使用TCP协议打洞实现P2P。结论是:办不到!!!

网上搜索到的文章转载来转载去,都不知道这些文章是什么时候发布的。而且大多数没有给源代码,却说了一堆有的没得。有代码的也不好使,还有让服务器做中转的代码。

按照文章里说的给socket设置SO_REUSEPORT确实可以多个socket绑定相同端口。但最后一步,两个客户端相互连接,客户端A发送的SYN的时候,我家移动的线路上最外层的路由会给你一个RST,电信的线路上发出去后杳无音信,多次重发之后连接失败。。。同时,客户端B发起连接的时候情况同样。最后两边都连接失败。

说好的比UDP打洞复杂一点的呢。。。

网上有些人说成功了。想了想,估计也只能用网络设备不一样来解释了。。。

 

本人能力有限,如果有懂的人,望不吝赐教。