完成端口需要一下几个步骤,可是我有点不明白。
1.初始化Winsock
2.创建一个完成端口
3.根据服务器线程数创建一定量的线程数
4.准备好一个socket进行bind然后listen
5.进入循环accept等待客户请求
6.创建一个数据结构容纳socket和其他相关信息
7.将连进来的socket同完成端口相关联
8.投递一个准备接受的请求
在接受了一个客户请求连接后,同连进来的socket同完成端口相关联,然后准备接收和发送,那我是不是同socket关联以后,那么这个套节子是不是一直就和完成端口关联呢,如果有另外的一个请求连接来到,那我以前的关联socket工作受影响吗?
1.初始化Winsock
2.创建一个完成端口
3.根据服务器线程数创建一定量的线程数
4.准备好一个socket进行bind然后listen
5.进入循环accept等待客户请求
6.创建一个数据结构容纳socket和其他相关信息
7.将连进来的socket同完成端口相关联
8.投递一个准备接受的请求
在接受了一个客户请求连接后,同连进来的socket同完成端口相关联,然后准备接收和发送,那我是不是同socket关联以后,那么这个套节子是不是一直就和完成端口关联呢,如果有另外的一个请求连接来到,那我以前的关联socket工作受影响吗?
-----------------------------
一般我们把套接字同重叠结构结合在一起,所以不会影响。
CBlockingSocket *pNewSocket = NULL;socketoftcp.Create();
socketoftcp.Bind(sd);
socketoftcp.Listen(DATATRANS_WAITCOUNT_MAX);//20
for(;;)
{
CSockAddr sdofconnect;
pNewSocket = new CBlockingSocket;
if(!socketoftcp.Accept(*pNewSocket,sdofconnect)
{
Sleep(50); if(socketoftcp.m_hSocket)
{
socketoftcp.Close();
}
...
}