1.现在的 bt 协议的 p2p 是 tcp 还是 udp 协议啊? 2.tcp 穿透好像要端口复用,但是 tcp 不是一个端口要么监听要么发送请求么,一但关闭连接,立刻映射的端口就不一样了啊......到底怎么实现啊,怎么才能复用而不改变映射的地址啊,node 怎么实现
1
miniliuke OP 难道真的没有好的解决方法?哪怕是全克隆
|
2
miniliuke OP bt 下载点对点传输文件用的是 tcp 还是 udp 啊
|
3
rongyiran 2017-08-09 09:40:35 +08:00
可以看看 Http 权威指南,
你这么一问,让我第一想到的是 web 隧道。 |
4
gejigeji 2017-08-09 09:49:46 +08:00
感觉 lz 一些概念没搞明白
|
5
joshu 2017-08-09 09:50:26 +08:00 via Android
tcp 和 udp 都有
主动发送请求时端口是随机的,被动接受请求时用的是监听端口 |
6
bboot9001 2017-08-09 09:55:02 +08:00
可以搜搜内网穿透的原理看看
|
7
littlewing 2017-08-09 10:00:02 +08:00
upnp
|
8
miniliuke OP @littlewing
@joshu @bboot9001 UDP 的穿透我可以实现,因为我可以把监听和发送绑定在同一个端口,这样 NAT 映射的也是同一个端口。。。但是 TCP 无法实现,我看网上都说 tcp 的端口复用,不是很明白,因为印象中一般 TCP 绑定了端口,就没法再从同一个端口发送了,还是我错了 |
9
b1eberg0n 2017-08-09 11:17:15 +08:00
BT 走 TCP
|
11
disk 2017-08-09 11:51:53 +08:00 via Android
@miniliuke p2p 有 tracker 服务器的,客户端需要把一个监听端口映射出去。你干吗要自己造轮子呢。。。
|
13
SleipniR 2017-08-09 16:52:52 +08:00
一些关键字,仅供参考:
UPnP(Universal Plug and Play) STUN(Simple Traversal of UDP Through Netwoek Address Translators) TRUN(Traversal Using Relay NAT) ALG(Application Layer Gatewqy) ICE(Interactive Connectivity Establish) |
14
jedihy 2017-08-10 02:52:17 +08:00
映射都是映射监听的端口,只有内网被动监听才需要映射,主动发起连接在不在内网没区别。
映射你 P2P 监听端口就行了。 |
15
jedihy 2017-08-10 02:53:31 +08:00
@miniliuke 你真的需要实现 resue port?而不是搞错概念了?这个只需要一行代码就可以实现`setsockopt(...)`。
|
16
mingl0280 2017-08-10 05:13:08 +08:00
我觉得你好像搞错了什么东西…… TCP 的连接建立以后,两端(几乎)对等,不存在谁只能监听或者谁只能发送的问题……
|