2011-11-14 139 views
0

我不太確定爲什麼這不會工作。我的應用程序工作正常,如果客戶端和服務器運行在同一臺PC上,因此127.0.0.1但它不會連接到我的其他筆記本電腦使用IP 82.41.108.125這是該設備的IP。UDP無法連接到127.0.0.1以外的任何其他東西

爲什麼會出現這種情況?

+1

UDP不'連接'任何東西。你的意思是'發送'或'接收'。 – EJP

+0

我編輯了我的帖子,添加了一些可以幫助你理解事物的信息。 –

回答

0

假設你所有的編碼工作正常,你的防火牆很可能會阻塞端口 - 嘗試打開你運行應用程序的端口號(在客戶端/服務器comptuers的防火牆選項中)。

應闡明事一些光一些額外的信息

網絡設備使用ARP(地址解析協議)和RARP(反向地址解析協議)來映射IP地址鏈接層(MAC)地址和背部。您的網絡接口卡(插入到以太網電纜的東西)將在兩臺計算機上具有唯一的MAC地址。每臺PC都有一個爲其配置的IP,由更高級別的協議(網絡層中的那些協議)使用。

如果您的程序正常工作,計算機A將知道計算機B的IP地址(它將與計算機A不同)。當計算機A發送給計算器B時,假設它們直接連接,並且不通過路由器或其他計算機之間的路由器,則計算機A的鏈路層將需要將該計算機B的IP轉換爲它可以使用的MAC地址。它通過向同一子網絡上的所有網絡PC發送廣播來詢問「嘿,這是你的IP!」嗎?本質。有一個IP與廣播的IP匹配是的,「是的,這是我的 - 這是我的MAC地址,所以你可以直接和我說話。」

因此,如果兩臺計算機具有相同的IP,則全部進入下一步:)不這樣做 - 給它們唯一的IP並確保計算器A傳輸到計算機B正在監聽的相同UDP端口和IP以及。通訊工作在{IP,Port}對中 - 就像電話號碼和區號。

也...

正如所說的EJP - UDP是無連接協議 - 計算機公正發送到計算機B,希望B計算機正確監聽。如果計算機B沒有在監聽或者處於正確的狀態下處理數據,數據將被丟棄並丟失。計算機A不會知道發生了這種情況。如果你想要可靠的通信,它會繼續嘗試,你可以保證計算器B收到計算機A的數據,然後使用TCP代替 - 它建立連接並使用確認進行3次握手,以確保數據在沒有時重新傳輸到達另一端。

+0

我的筆記本電腦現在擁有相同的IP權限,防火牆現在已被禁用,但數據仍未到達。有任何想法嗎? – Chris

+0

給予筆記本電腦不同的IP首先 - 他們不應該有相同的。我很驚訝他們甚至會互相交談,或被允許在網絡上使用相同的IP。如果他們仍然不會彼此交談,那麼你可能應該折騰一些代碼讓人們看看。也許你沒有使用INADDR_ANY來接受來自所有接口或類似的信息。 「我的筆記本電腦現在都擁有相同的知識產權」 –

+0

「 *這就是問題所在。*爲什麼筆記本電腦A在發送給它的IP地址是自己的東西時,將任何東西放在B線上? – EJP

0

這可能是你正在監聽本地主機(127.0.0.1),並且不接受其他流量。使用通配符地址。

使用netstat -npu檢查服務器。

如果情況並非如此,那麼可能是防火牆問題,請使用tcpdump或wireshark進行驗證。

+0

wireshark在關閉停止的防火牆後顯示該端口無法訪問。雖然 – Chris

+0

好了,現在檢查其他的可能性,但仍然沒有收到客戶端的任何東西.. –

+0

我使用htonl(INADDR_ANY)作爲通配符 – Chris

0

在筆記本電腦上檢查防火牆......大部分時間充當垃圾運輸。

相關問題