2011-12-13 65 views
-1

我正在使用Indy組件包。其實我已經成功通過udp製作了p2p網絡,現在它仍然在運行,但是通過udp,我需要每次發送一些ping包,否則路由器會刪除映射端口列表中的虛擬端口!對於視頻或聲音或udp遊戲項目是最好的方式,但對於我的項目我需要通過tcp。我正在嘗試通過tcp製作p2p網絡

我該怎麼做:我有1臺服務器機器擁有一個真正的ip,所有客戶端在開到p2p模式之前都需要將包發送到服務器,現在服務器知道路由器上的所有客戶端虛擬端口(輸出端口) ,如果某個客戶想要將數據發送到另一個客戶端,他只需要將數據發送到路由器上的另一個客戶端IP和虛擬端口。路由器可以自動映射它。

我是在tcp中嘗試相同的方式,客戶端發送數據到另一個客戶端ip和虛擬端口(在路由器上),但tcp客戶端組件無法接收它!使用UDP它可以接收

爲什麼在TCP的P2P拓撲結構不同,那麼UDP

或者我如何與idtcpserver零件以將數據發送到服務器機器創建

+0

或者tcp客戶端無法連接到另一個客戶端:( – relativ

回答

1

您與綁定sockets路由器上的虛擬端口TCP。 UDP的綁定方式不同。
Difference between TCP and UDP

在你有包(如果你提供的是你可能會得到更多的幫助名字)應該有某種connection/socket/binding到被連接到服務器的客戶端。這是你需要發送數據的連接。

+0

謝謝默認,我會檢查它 – relativ

+0

我已經知道udp和tcp的區別我的問題是我有1 tcpserver在NAT下,tcpserver端口是1234但後面如何獲得一個映射到我的tcpserver端口的虛擬端口?任何想法? – relativ

+0

您必須配置NAT以將流量轉發到您的機器。NAT *後面的機器允許創建與機器的連接*外面的* NAT,但不是**相反。 – Default