作者peilin0407 (嗨啾)
看板C_and_CPP
標題[問題] Socket連線問題
時間Wed Jun 15 11:55:29 2016
各位大大好,想請問一下
假設我有兩台電腦
其中A電腦是固定IP為:101.1.1.1
然後在別的地方有一台網路分享器的固定IP假設是:202.2.2.2
接著B電腦透過此網路分享器得到的虛擬IP是:192.168.3.3
透過TcpSocket的機制,A電腦如果架TcpServer
B電腦可以透過A的IP連到對方那裡
而A電腦就可以取得B電腦的TcpSocket,雙方確實可以互相溝通
但因為我實作的程式中,A電腦想傳一些像是聲音、視訊之類的到B電腦
我想到的就是用Udp來傳送這些資料
所以我在B電腦開啟了一個UdpSocket並監聽5000的Port
但問題就卡在這@@
我在A電腦用UdpSocket傳送資料的時候,
並沒辦法傳送該資料到192.168.1.1:5000,畢竟這是虛擬IP
但我如果傳送到101.2.2.2:5000,對方也收不到
(無法設定對方分享器的Mapping)
想請問這樣的狀況該怎麼辦@@
還是說這類情況的話,聲音、視訊之類的東西只能透過Tcp來傳送嗎?
拜託各位幫幫忙
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.64.91.67
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1465962932.A.8B1.html
推 fatrabitree: Hole punching 06/15 12:50
→ sosokill: router設定DMZ, Virtual Server 06/15 19:31
→ laladeer: 上網查DMZ設定 很簡單的 06/16 00:02
推 l321122: 這時候應該是B用udp主動向A連線,A就可以根據udp的source 06/16 01:00
→ l321122: IP把資料傳回給B 06/16 01:00
→ l321122: 這時候B的router會自動mapping,而不用做port forwarding 06/16 01:02
→ peilin0407: 了解了,感謝各位大大的幫忙,讓我學到了很多 06/16 20:28