0
我正在學習套接字。我正在寫一個簡單的UDP服務器,通過它發送小消息。所有活動客戶端每三分鐘發送一次「保持活動」消息,以便服務器可以查看哪些客戶端在線。С++ - 具有多個客戶端的UDP服務器
這些消息流中收到
流功能:
void keepAlive(SOCKET udp)
{
int len=0;
while(true)
{
int len=recvfrom(udp,requestBuffer,maxMessage,0,(sockaddr*)&cliAddr,&cliAddrSize)
// Actions with the received message
}
}
但如何實現,例如,消息發送給所有的客戶端或一個特定的傳輸,如果套接字已「忙」。需要創建一個新的套接字來發送消息? (在服務器和客戶端上)?如果客戶端在NAT後面?
同樣的問題也對客戶端(因爲存活取出的線程,但解決這個問題的時候,另一種是被解決過)
我不想立即發送答案。我想隨時做到這一點,但我的套接字將忙於等待保持活動狀態。 –
在服務器中,如果您不想阻止recvfrom,則可以創建另一個線程來處理事件或您收到的消息。在其他線程中,您可以隨時決定發送。 – user8380302