我寫了一個UDP異步通訊的程式,PC作為客戶端,要同時接收多個服務器發來的資料,用WSAAsyncSelect判斷FD_READ,然后呼叫自己寫的接收函式。
現在我的問題是,接收的資料怎么確定是哪個服務器發來的? 呼叫RecvFrom函式怎么寫?
uj5u.com熱心網友回復:
客戶端沒有接收多服務器的功能,但是可以開放多個埠鏈接不同的服務器。
埠定了服務器也就定了。
uj5u.com熱心網友回復:
int recvfrom(_In_ SOCKET s,
_Out_ char *buf,
_In_ int len,
_In_ int flags,
_Out_ struct sockaddr *from,
_Inout_opt_ int *fromlen
);
from 就包含了發送端的ip地址
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740120(v=vs.85).aspx
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
使用多行程。uj5u.com熱心網友回復:
接收時會回傳發送方IP,如果不能通過ip來判斷,可以在傳輸資料里加入標識額uj5u.com熱心網友回復:
客戶端要連接到服務器,都會分配一個socket描述符號,然后每接收到一個包,在回呼函式中把socket描述符一起當作引數就可以標識了uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
recvfrom 有個引數就是來源地址。如此分辨服務器。
uj5u.com熱心網友回復:
UDP沒有客戶端和服務器分吧,通過接收包的地址判斷轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/42175.html
標籤:網絡編程
上一篇:vc控制ansys問題?
