Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1028014
  • 博文数量: 288
  • 博客积分: 10306
  • 博客等级: 上将
  • 技术积分: 3182
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-12 17:00
文章分类

全部博文(288)

文章存档

2011年(19)

2010年(38)

2009年(135)

2008年(96)

我的朋友

分类: 系统运维

2008-09-15 09:34:52



文中提到:

  1. //设置KeepAlive    
  2. BOOL   bKeepAlive   =   TRUE;    
  3. nRet   =   ::setsockopt(m_sockDesc,   SOL_SOCKET,   SO_KEEPALIVE,   (char*)&bKeepAlive,   sizeof(bKeepAlive));    
  4. if   (nRet   !=0)    
  5. {    
  6. sprintf(m_pszError,   "Winsock   error   :   %s   (Error   Code   %d)\n ",   "Socket   SetOpt   failed ",   WSAGetLastError());    
  7. return   FALSE;    
  8. }    
  9.   
  10. //设置KeepAlive检测时间和次数    
  11. TCP_KEEPALIVE   inKeepAlive   =   {0};   //输入参数    
  12. unsigned   long   ulInLen   =   sizeof(TCP_KEEPALIVE);        
  13.   
  14. TCP_KEEPALIVE   outKeepAlive   =   {0};   //输出参数    
  15. unsigned   long   ulOutLen   =   sizeof(TCP_KEEPALIVE);        
  16.   
  17. unsigned   long   ulBytesReturn   =   0;    
  18.   
  19. //设置socket的keep   alive为10秒,并且发送次数为3次    
  20. inKeepAlive.onoff   =   1;      
  21. inKeepAlive.keepaliveinterval   =   10000;   //两次KeepAlive探测间的时间间隔    
  22. inKeepAlive.keepalivetime   =   3;   //开始首次KeepAlive探测前的TCP空闭时间    
  23.   
  24. nRet   =   WSAIoctl(m_sockDesc,      
  25. SIO_KEEPALIVE_VALS,    
  26. (LPVOID)&inKeepAlive,    
  27. ulInLen,    
  28. (LPVOID)&outKeepAlive,    
  29. ulOutLen,    
  30. &ulBytesReturn,    
  31. NULL,    
  32. NULL);    
  33. if(SOCKET_ERROR   ==   nRet)    
  34. {    
  35. sprintf(m_pszError,   "Winsock   error   :   %s   (Error   Code   %d)\n ",   "Nonblocking   socket   call   error ",   WSAGetLastError());    
  36. return   FALSE;    
  37. }   


===============================================

阅读(1637) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~