设为首页 加入收藏

TOP

tsockopt()函数
2014-11-05 13:15:06 】 浏览:228
Tags:tsockopt 函数

  最近在看TCP通信方面,觉得setsockopt()函数很有用,就将它的用法总结了下:


  1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:


  BOOL bReuseaddr=TRUE;


  setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));


  2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:


  BOOL bDontLinger = FALSE;


  setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinger,sizeof(BOOL));


  3.在send(),recv()过程中有时由于网络状况等原因,发收不能预期进行,而设置收发时限:


  int nNetTimeout=1000;//1秒


  //发送时限


  setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));


  //接收时限


  setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));


  4.在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统默认的状态发送和接收一次为 8688字节(约为8.5K);在实际的过程中发送数据和接收数据量比较大,可以设置socket缓冲区,而避免了send(),recv()不断的循环收发:


  // 接收缓冲区


  int nRecvBuf=32*1024;//设置为32K


  setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));


  //发送缓冲区


  int nSendBuf=32*1024;//设置为32K


  setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇函数与函数指针 下一篇MFC中实现的画箭头算法(ArrowinMF..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目