socket编程多线程如何处理客户端不同请求

我现在在服务端想采用多线程处理客户端的连接,发消息,收消息,更新客户列表,
但是我是如何才能知道客户端想要干什么呢?
这个别人的代码 ,他是通过switch判断的,我现在想明白如何实现这个switch过程,控制台程序。 希望大佬回答详细点 ,初如编程很多不明白图片说明

网络通信模型里面,操作系统会不断的探测被监听端口,扫描socket套接字的句柄, 当有信号到达时会主动报告给应用层(也 就是我们的代码),
信号类型包括以下几种:
1、链接建立
2、链接关闭
3、数据包请求到达
4、。。。

具体记不大得了,你可以看看tcp/ip协议相关的资料。

根据图片代码来说
ID_LISTEN 就是负责监听客户端连接的。。。监听到了创建新线程 去接收数据。。

ID_CLOSE 关闭

ID_SEND 创建数据发送线程。。 CreateThread 函数都是为空,不知道里面如何区分多个客户端的连接。。

问题 : 但是我是如何才能知道客户端想要干什么呢?

答: 和客户端约定好协议, 协议包括协议头等等. 每次客户端发数据过来,根据协议解析.
比如协议头里有一个字段是 CMDID 登陆发 1001, 退出发 1002, ,发消息 1003

然后定义一个宏头文件 #define CMD_LOGIN 1001 #define CMD_LOGOUT 1002 #define CMD_SENDMESSAGE 1003 ....

你解析你和客户端约定的通信格式的对应字段就知道,客户端要干嘛了.