0
我試圖實現多線程UDP服務器,其中每個線程服務於一個客戶端。 到目前爲止,客戶正在正確註冊並且數據正在被客戶接收。爲了使其可靠,我試圖在特定時間間隔內未收到消息時發送否定確認。UDP-多線程服務器無法區分ack msg和連接msg
該確認被視爲來自新客戶端在服務器端recvfrom的()功能的請求。我如何在服務器端區分這兩者?有沒有與發送和接收相關的功能可以做到這一點?
該代碼是在c和我已經使用並行線程執行線程function.I已經使用了基本SENDTO()和recvfrom()套接字函數實現相同。
代碼大綱:
At the server side:
recvfrom()
when received:
Add to client list
create thread:
send data in the thread function
exit thread
At the client side:
sendto() -> to initiate the request to the server
when time < timeout
recvfrom() -> receive the data from the server
when timeout occurs
sendto() -> send negative acknowledgement.
在你的UDP數據前面放置一個命令代碼,指示它是什麼類型的消息。一個字節可能就足夠了。 – 2014-09-19 00:54:17
我怎麼能夠在服務器端區分相同?使用從客戶端收到的消息的長度? – Networks101 2014-09-19 00:58:07
如果你想要一個可靠的面向連接的數據報協議,你有兩種選擇。向TCP添加數據報層,或者嘗試向UDP添加可靠性和連接。首選要容易得多。 – user3386109 2014-09-19 01:27:32