方案一:
客戶端先使用tcp登入伺服器,連線成功後服務端拿到了客戶端的ip位址及登入id.
客戶端再嘗試使用udp傳送資料報,客戶端根據拿到的資料報的ip位址就能知道是哪個使用者發的
另外 服務端要使用心跳機制,保證當使用者鏈結斷開後能及時處理(因為客戶端連線斷開後tcp連線並不會及時斷開)
方案二:
下面是一種多執行緒實現.tcp確保連線狀態,每個udp執行緒服務乙個客戶端.
客戶端先使用tcp登入,連線成功後服務端從乙個固定埠如8000開始,檢視此埠是否被占用,直到找見乙個未被占用的埠後,服務端通知udp程序繫結埠號,只供這個客戶端服務.即將udp繫結埠號的操作datagramsocket socket = new datagramsocket(port) 放在多執行緒內.
之後服務端返回給客戶端ip位址和埠號,客戶端使用此ip位址和埠號做udp連線.
tcp始終保持連線,當tcp斷開後服務端通知udp程序釋放udp相應埠.同樣在tcp內加入心跳機制,以保證客戶端連線斷開後tcp連線並不會及時斷開
方案三:
token 不過這種方式我並不是很熟悉,就不多介紹了.
大家可以自己嘗試實現一下.
linux中UDP程式流程 客戶端 服務端
udp 使用者資料報協議 user datagram protocol 是乙個無連線的簡單的面向資料報的運輸層協議。優點 傳輸速度快 缺點 不可靠 socket的中文意思是接外掛程式 建立socket 在 python 中 使用socket 模組的類 socket 就可以完成 socket.sock...
在服務端應用中如何獲得客戶端 IP
如果有x forwarded for的請求頭,則取其中的第乙個 ip,否則取建立連線 socket 的 remoteaddr。而x forwarded for基本已成為了基於 proxy 的標準http頭,格式如下,可見第乙個 ip 代表其真實的 ip,可以參考 mdn x forwarded fo...
在HP UX中設定DNS客戶端
要在hp ux v11.31 系統下設定dns客戶端,以使用內網dns伺服器。具體步驟如下 注意 按照次序進行。尤其在已經執行使用的系統中,出錯會引起宕機或鏈結中斷等嚴重問題。1 以 etc hosts 檔案為第一排序。重要的主機名等要寫在hosts中,包括本機主機名 群集中的主機名等。注意 在已經...