socket TCP服务器连接多个客户端,服务端接收数据时怎么判断是哪个客户端发来的数据

用VC编写一个基于TCP/IP的异步套接字通信程序,一个服务器用多个SOCKET对象分别连接多个客户端。当一个客户端向服务器发送数据时,服务器端发生FD_READ事件,然... 用VC编写一个基于TCP/IP的异步套接字通信程序,一个服务器用多个SOCKET对象分别连接多个客户端。当一个客户端向服务器发送数据时,服务器端发生FD_READ事件,然后服务器调用recv函数来接收数据。

现在问题来了,recv的第一个参数要求填写已连接客户端的socket对象,但是有多个客户端,也就有多个已连接的socket对象,只有填写与当前发送数据客户端相应的socket才能正常接收数据,否则无法接受数据。

我应该如何判断是哪个客户端发来的数据呢?有没有什么方法在recv之前就判断发送方的socket信息?
展开
 我来答
xystar2012
2013-08-15 · 超过24用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:57.7万
展开全部
调用recv时 是有条件的,这个条件即有读事件触发,该读事件触发者即为与之通信的socket,也即你所要的“判断发送方的socket”,顺着这个道理就能找到对应关系了。
匿名用户
2013-08-15
展开全部
wParam参数标识了已经发生了的网络事件的套接字。lParam参数的低字指定了已经发生的网络事件。
追问
正解!
在MSDN的WSAAsyncSelect函数描述就有说明:
The
wParam parameter identifies the socket on which a network event has
occurred. The low word of lParam specifies the network event that has
occurred.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式