2008-12-03 160 views
0

我試圖運行客戶端服務器UDP程序。 我的兩臺機器都在不同的網絡中。我在我的路由器中設置了端口轉發。路由器後面的客戶端服務器程序

我的服務器有兩個IP地址: 1)External 200。?。?。? 2)內部192.168.0.100

在創建UDP服務器時,我需要創建綁定到地址的套接字。

我應該將套接字綁定到外部還是內部?

我試着用內部地址,但它沒有從客戶端獲取任何數據。

建議...

回答

0

鑑於這一事實,你說你設置端口轉發,你的UPD程序中指定適當的端口?或者你只是將數據發送到IP地址?如果指定了外部IP地址和端口號,則路由器上的端口轉發應將其發送到網絡上的相應節點。

+0

在客戶端和服務器相同的端口號在端口轉發是的,我已經設置端口15500 ... 在服務器,我創建recviever地址 recvAddr.sin_addr.s_addr = htonl(INADDR_ANY); 我應該給INADDR_ANY還是外部IP? – anand 2008-12-03 08:07:25

0

如果你必須綁定到一個特定的地址,那麼它將是內部地址,絕對不是外部地址。

路由器上NAT的全部內容是隱藏你的外部世界的內部網絡尋址方案。路由器的NAT算法將負責將任何入站數據包的目標IP地址重寫爲正確的內部IP地址。

這不起作用表明您的端口轉發和/或路由器上的防火牆存在問題。除了轉發規則之外,您還需要設置特定的防火牆規則以允許通信,這並不罕見。