在udp中,如何知道是哪個客戶端發的及udp多執行緒

2021-09-13 20:12:40 字數 591 閱讀 3010

方案一:

客戶端先使用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中,包括本機主機名 群集中的主機名等。注意 在已經...