我使用Erlang來編寫一個bittorrent客戶端。對於同樣的問題,我被困了4天。Erlang的TCP端口
我發送握手給所有對等體,每個對等體都有自己的ip:port。
我使用gen_tcp:連接來連接。
問題是我無法得到他們的答覆。我做了大量的研究,並使用一些程序來監視我的入站/出站連接。
對等體獲取數據並將回覆發送回我用來發送握手的端口。
明智的代碼:get_tcp:connect選擇一個端口並使用該端口將數據發送到對等端。對端回覆該端口。但是,正如您在Erlang中所瞭解的那樣,您需要使用gen_tcp:listen來獲取回覆連接,並且您需要指定一個端口。在我的情況下,我應該監聽的端口是gen_tcp:connect返回的端口。
我可以使用inet:port得到這個端口號,但是錯誤總是一樣的:使用中的端口。 我明白爲什麼我會得到這個錯誤,這只是因爲我試圖監聽的端口已被gen_tcp:connect使用。我試圖關閉Socket來釋放端口但沒有任何東西。
所以我的問題是:是否有可能在Erlang中以某種方式連接到對等端並將數據發送到端口,然後在該端口上偵聽回覆。如果沒有,那麼我必須以某種方式告訴同行將我的數據發回給我選擇的端口。
歡迎來自所有愛爾蘭大師的任何想法。 謝謝,
//弗蘭克。
順便說一句爲什麼最近每個人都想寫BitTrent的同齡人fpr erlang ??? – 2010-11-11 15:19:14
這是作爲一個大學的任務,同行! – 2010-11-11 16:46:26