文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Windows网络编程——完成端口的实现(待补充,完善)

Windows网络编程——完成端口的实现(待补充,完善)

时间:2010-10-16  来源:%Weed%

  select(选择);

WSAAsyncSelect(异步选择模型);

WSAEventSelect(事件选择模型);

Overlapped(重叠);

completion port(完成端口);

 

以下记叙的是完成端口的实现步骤:(相关函数s参数说明,详见MSDN)

1.使用函数HANDLE CreateIoCompletionPort(...)创建一个完成端口句柄;

例:HANDLE hIocp=CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,0);

 

2.创建一个套接字并绑定好地址和端口

例:  int port=6666;

  sockaddr_in localAddr={0};

  SOCKET iocpSocket=socket(AF_INET,SOCK_DGRAM,0); 

  localAddr.family=AF_INET;

  localAddr.port=htons(port);

  localAddr.sin_addr.S_un.S_addr=INADDR_ANY;

      bind(iocpSocket,(sockaddr*)&localAddr,sizeof(sockaddr*));

 

3.将套接字与完成端口绑定

例:

  ULONG iocpKey=11;    //与套接字关联的键

     HANDLE tmpHIocp=CreateIoCompletionPort((HANDLE)iocpSocket,hIocp,iocpKey,0);   // 返回的HANDLE tmpIocp应与hIocp值一样;

 

4.套接字重叠操作

  使用函数int WSARecvFrom(...)执行重叠操作,重叠成功后函数返回值为SOCKET_ERROR,使用WSAGetLastError()的值为WSA_IO_PENDING;

  注意附给WSARecvFrom的第四个参数LPDWORD lpFlags变量应附值为0再取地址传递,否则重叠失败。

 

5.创建工作线

     在工作线程中使用BOOL GetQueuedCompletionStatus(...)或取套接字接收的数据及相关信息;

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载