首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

C++辅导(2)

2009-01-08 
如何正常的关闭一个套接字

    我们在利用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/

热点排行