18,356
社区成员
发帖
与我相关
我的任务
分享
if(WSAStartup(...)) return;
SOCKET Listener = socket(...);
if(NOT(INVALID(Listener))) return;
...
if(SOCKET_ERROR==bind(Listener...)) return;
if(SOCKET_ERROR==listen(Listener,SOMAXCONN)) return;
while(NOT(IsTerminated))
{
THREAD T=GetFreeThread();//取得空闲线程
if(NOT(T))//如果没有空闲线程
WaitThreadOrTerminated();//等待空闲线程信号或者退出信号
if(IsTerminated) continue;//退出
SOCKET Client = accept(Listener...);//接受连接
IsTerminated = IsTerminated || ERROR() || INVALID(Client);//判断是否退出,是否发生错误,是否有效连接
if(IsTerminated) {
if(NOT(INVALID(Client)))
closesocket(Client...);
continue;
}
if(NOT(JoinClient(Client,T)))//交给线程处理连接
closesocket(Client...);
}
WSACleanup();