【发布时间】:2014-08-10 13:27:10
【问题描述】:
我从来没有想过这个问题,而且我已经编程多年了。 P2P 程序(如聊天程序或 torrent 程序)如何设法在两个对等点之间创建连接,而对等点不打开任何端口?我知道我还没有为 Skype 打开一个端口,但我可以向我的朋友发送和接收大文件,而且我很确定所有这些千兆字节不会通过 Skype 服务器。还是他们?
洪流呢?我可以上传数据给同行,我也没有打开任何端口。
我很确定答案将与语言无关,但如果我错了,我主要使用 C++ 编写代码。提前致谢。
【问题讨论】:
-
使用嗅探器找出答案。无论如何,“打开”一个端口(即在其上调用 listen() )只是建立连接的一种方式。一旦连接,双方就是对等点,即双方都可以发送和接收任何类型的数据。
-
@UlrichEckhardt 在这种情况下“打开一个端口”不是
listen(),而是更改一个或多个防火墙的配置以允许具有特定端口号的流量通过防火墙.
标签: sockets networking tcp udp p2p