当前位置:编程学习 > C#/ASP.NET >>

C# TCP 如何打洞实现P2P传输。

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。 --------------------编程问答-------------------- udp打洞比较容易,TCP由于API的本身就分了服务端和客户端,不知道如何实现. --------------------编程问答-------------------- http://www.csharpwin.com/csharpspace/2248.shtml
看有帮助没 --------------------编程问答-------------------- 哪种都需要一个公网服务器  起到协调的作用  不然打不了
没有demo --------------------编程问答-------------------- 我等啊等,继续等,TCP 穿透啊, 网上说是能穿透,就是不知道如何穿透,UDP倒是挺好穿透的。TCP咋那么难呢。 --------------------编程问答-------------------- 别潜水啊啊啊 --------------------编程问答-------------------- 又沉底了 --------------------编程问答--------------------
引用 6 楼 zhgyuhui 的回复:
又沉底了
http://download.csdn.net/detail/zhuankeshumo/4449548p2pchat --------------------编程问答-------------------- 很早以前的代码 --------------------编程问答-------------------- 以前有看书上说tcp打洞不是所有路由器都支持的 --------------------编程问答--------------------
引用 楼主 zhgyuhui 的回复:
C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据 --------------------编程问答--------------------
引用 10 楼 wyd1520 的回复:
Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据

通讯的两个QQ传输文件就是TCP协议 在传输的时候可以看到,不是P2P么 --------------------编程问答--------------------
引用 11 楼 zhgyuhui 的回复:
Quote: 引用 10 楼 wyd1520 的回复:

Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据

通讯的两个QQ传输文件就是TCP协议 在传输的时候可以看到,不是P2P么


你没发现在同一局域网传可以达到几M,而一但跨网了。就慢了,还有你怎么能确认QQ传的就是一定走TCP。QQ现在是TCP UDP混合。 --------------------编程问答--------------------
引用 10 楼 wyd1520 的回复:
Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据


如果所有数据都通过服务器转发,那还算P2P么。。。
--------------------编程问答-------------------- UDP打洞  不是TCP --------------------编程问答-------------------- --------------------编程问答--------------------
引用 12 楼 wyd1520 的回复:
Quote: 引用 11 楼 zhgyuhui 的回复:

Quote: 引用 10 楼 wyd1520 的回复:

Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据

通讯的两个QQ传输文件就是TCP协议 在传输的时候可以看到,不是P2P么


你没发现在同一局域网传可以达到几M,而一但跨网了。就慢了,还有你怎么能确认QQ传的就是一定走TCP。QQ现在是TCP UDP混合。

你知道怎么个结合法不? --------------------编程问答-------------------- TCP 打洞 然后实现 P2P ?

TCP是连接式传输,我们常用的HttpRequest就是TCP ,第一步是建立连接,然后传输数据,获取返回数据

建议用UDP来做,获取对方IP后,发送数据包,当对方接受到这个数据包后,会返回给你一个信息,在接到这个信息后,如果正确,就可以发送数据了,进行点对点的传输,但是容易丢包。。

网上很多例子的。。 --------------------编程问答--------------------
引用 13 楼 f800051235 的回复:
Quote: 引用 10 楼 wyd1520 的回复:

Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据



如果所有数据都通过服务器转发,那还算P2P么。。。


你没看内容呀,说的是打洞,你TCP打打看,TCP两个不同的局域网的机子能直接访问。把内容看清了再说好么。P2P实现协议原理你知道是啥不? --------------------编程问答--------------------
引用 16 楼 zhgyuhui 的回复:
Quote: 引用 12 楼 wyd1520 的回复:

Quote: 引用 11 楼 zhgyuhui 的回复:

Quote: 引用 10 楼 wyd1520 的回复:

Quote: 引用 楼主 zhgyuhui 的回复:

C# TCP 如何打洞实现P2P传输。有源码的提供一份吧。谢谢。


TCP怎么打洞没得打,只有UDP才有的打

TCP要有一个公网的服务端

两个客户端都以公网的服务端做中转数据

通讯的两个QQ传输文件就是TCP协议 在传输的时候可以看到,不是P2P么


你没发现在同一局域网传可以达到几M,而一但跨网了。就慢了,还有你怎么能确认QQ传的就是一定走TCP。QQ现在是TCP UDP混合。

你知道怎么个结合法不?


QQ内部会判断走TCP还是直接走UDP,你要点对点那要走UDP TCP都要中转,除非在公网上能直接访问其中一个才能二者对连 --------------------编程问答-------------------- 看来TCP打洞行不通啊,改用了UDP,担心UDP发送文件的安全性,会丢包。文件就会出现打不开的情况。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 20 楼 zhgyuhui 的回复:
看来TCP打洞行不通啊,改用了UDP,担心UDP发送文件的安全性,会丢包。文件就会出现打不开的情况。

超时重发,验证失败重发呗 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
的确不是一个复杂问题。 --------------------编程问答-------------------- UDP打洞需要用外网的服务器么 --------------------编程问答-------------------- 需要一个外网服务器,有些也是打不通的,有几个类型是打不通的。 --------------------编程问答-------------------- 我看网上有说用路由器映射一下就可以当外网测试  我不是很明白  你明白么 --------------------编程问答-------------------- 等待高手。。。。。 --------------------编程问答--------------------
引用 9 楼 wangyue4 的回复:
以前有看书上说tcp打洞不是所有路由器都支持的

+1
我查网上资料,看到的也是这个结论。qq传文件的时候,如果不在同一个局域网应该是用tcp中转方式。我测试过qq跨网传输文件,在一开始有个明显的等待时间。 --------------------编程问答-------------------- 坐等高手了 --------------------编程问答--------------------
引用 27 楼 gaige0312 的回复:
我看网上有说用路由器映射一下就可以当外网测试  我不是很明白  你明白么

就是用花生壳之类的做个解析,进入路由把你开通的端口指定到你的计算机,当你连接你的公网IP和端口时,就连接到了你的服务器,这样就当了一个外网服务器。 --------------------编程问答-------------------- 我也在找tcp打洞的C#源码啊,和楼主一起等吧,在高手出现之前,先用udp打洞吧!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,