如果UDP服务器调用RecvFrom(s, buff, 100, ...)接收客户端数据,而这是多个客户端同时向服务器发送50个字节的数据包,问服务器调用一次RecvFrom()会不会收到数据包长度等于100的情况,而这个数据包中的数据分别来源于不同的客户端?
解决方案 »
- 哪里错了 求解
- 关于DirectX的页面(DirectDrawSurface)的问题
- 打印多页问题
- 加密后会出现特殊字符,可何加密后成可见的ASCII字符比如字母或数字。而且还能据此解密。(不要具本加密算法)
- 如何在MFC OPENGL单文档程序界面中显示数据库视图?
- 如何进行端口映射?
- 在接口中如何传递包括STL类的结构??在线等!--这个问题困扰我几天了!
- 请问如何取得当前本地机上的用户名?
- 那位帅哥晓得,html help 的chm中怎么在程序中调用?map alias .....的设置?
- MFC 关于picture控件里根据像素打出图像怎么适应控件大小的问题
- 我做了一個類似VC++那樣界面的程序,現在我想讓主視圖區(也就是VC++裡顯示程序源代碼的那個主窗口)在調用新建時就清空裡面的內容!
- 可否去掉SDI框架窗口的标题栏?
"服务器调用一次RecvFrom()会不会收到数据包长度等于100的情况,而这个数据包中的数据分别来源于不同的客户端"
但是: 你可以区分是那个客户端发给你的,所以还有什么问题么~?char Buff[256];
SOCKADDR_IN Client_sa;
DWORD nAddrSize = sizeof(SOCKADDR_IN);
int nRecvCount = 0;
nRecvCount = recvfrom(hSocket,Buff,256,0,(sockaddr *)(&Client_sa),&nAddrSize); if(nRecvCount == SOCKET_ERROR)
printf("recvfrom() error code is:%d.\n",WSAGetLastError());
else
{
printf("%s client send is:\n",inet_ntoa(Client_sa.sin_addr));
printf("%s\n",Buff);
}
如果是tcp包,不同的客户端发有不同的socket,当然不会有不同客户端数据在一起的情况,只可能是同一个客户端,分批发送的数据一起受到。如果是udp,不论如何一个报文就是一个报文。
假如可以的话,那怎么去判断这个包是由哪些客户端发送包的组合,按你的方法应该是
没法判断的。
hjun:
谢谢