2012-09-19 169 views
0

今天我建立了一個基於UDP的聊天軟件,它使用UDP監聽器和服務器來組成聊天應用程序。IM端口轉發?

當我把它給我的朋友來測試,他,他只好端口轉發,這樣我的消息可以達到他通過路由器是,所以沒有一

我很好奇,怎麼做IM客戶端一樣MSN Messenger和Skype工作。比如他們如何接收消息而無需端口轉發?

感謝, Vidhu

回答

2

的MSN等客戶端連接到在技術上也有端口轉發/路由第三方遠程服務器,但它是通過一個靜態IP地址暴露給公衆。你下載一個像MSN這樣的客戶端應用程序,它連接到遠程服務器,但客戶端本身不作爲服務器,因此不需要端口轉發。它很可能會消耗消息和塊,直到更多進來,所以服務器不需要通過IP地址訪問它來發送消息。

就你而言,由於你是在專用網絡上託管遠程服務器,因此你需要將流量路由到該IP地址,以便連接到正確的內部設備,就像您託管其他任何網站一樣在你的一臺電腦上。

隨着你的朋友也不得不向前移動以使應用程序工作,看起來他們的客戶端也充當服務器,並且不會與服務器保持連接/套接字。如果客戶端與服務器保持一個套接字,只有你必須向​​前端口,而你的朋友不會這樣做,因爲他們的客戶端只會監聽請求並阻塞,直到進入服務器,並將請求發送到服務器。


你可能想看看像RabbitMQ的一個真正的消息總線,你可能擁有此消息總線,然後建立你的客戶訂閱,併發送/接收消息。另一種選擇是Redis,您可以使用POP功能刪除客戶端從隊列中檢索到的「讀取」消息。