//主要是增加了一个连接管理类,以及增加了消息处理线程
//消息处理线程其实是不断地在循环看列表中是否有新客户端添加进来
//添加进来就加入到select的读队列中,然后设置select的等待时间为0
//就是立即返回,非阻塞模式,select主要是一旦底层要有数据过来以后会根据IO的变化通知select的函数立即返回,然后遍历所有的socket,找到读变化的客户端,获取发送过来的休息,但是这个还有一个问题,会有半包的现象,因为tcp是数据流,他只保证不断流,但不保证水大小一样。/后续再继续解决
// server3.cpp : 定义控制台应用程序的入口点。
//
include “stdafx.h”
include
include
include “SocketList.h”
using namespace std;
DWORD WINAPI WorkThread(LPVOID lpParam)
{
SocketList* userlist=(SocketList*)lpParam;
int err=0;
fd_set fdread;
struct timeval timeout;
timeout.tv_sec=0;
timeout.tv_usec=0;
char receBuff[MAX_PATH];
char sendBuf[MAX_PATH];
SOCKET socket;
while (true)
{
userlist->makefd(&fdread);
err=selec