读书人

C++辅导(2)

发布时间: 2009-01-08 13:59:27 作者: liuhuituzi

我们在利用IOCP(完成端口)进行程序设计的时候,经常要关闭一些不满足条件的套接字。假如我们直接采用closesocket方法进行关闭的话,绑定到IO端口的此套接字的未发送的数据就会丢失,这种情况是我们不愿意发生的。下面介绍一种合理关闭此套接字的方法:
  首先,利用setsockopt(MSDN)函数设定套接字的选项,我们把此套接字设定为:假如有数据未发送,当数据发送完后再关闭此套接字。
  代码如下:
  LINGER lingerStruct;
  lingerStruct.l_onoff = 1;
  lingerStruct.l_linger = 0;
  setsockopt(Socket, SOL_SOCKET, SO_LINGER,
  (char *)&lingerStruct, sizeof(lingerStruct) );
  //
  // Now close the socket handle. This will do an abortive or graceful close, as requested.
  CancelIo((HANDLE) Socket);
  closesocket(Socket);
  clientSocket = INVALID_SOCKET;
  当在完成端口的数据被发送出去之后,套接字就会被关闭,这样我们就完成了一个套接字的关闭。

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.net/exam/

读书人网 >复习指导

热点推荐