setsockopt
来源:互联网 发布:网络协议的四层模型 编辑:程序博客网 时间:2024/04/30 22:32
总结一下常见用法,发现没有别人写的好,还是抄吧,出处http://blog.csdn.net/tody_guo/article/details/5972588。
1 closesocket(一般不会立即关闭,需要经历一定的间隔)后想继续使用该套接字。
BOOL bReuseaddr=TRUE;
setsockopt (s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));
2 接上,如果要使得closesocket后立即关闭,不经历等待
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 设置发送/接收缓冲度大小
Windows下缓冲区默认8K,如果套接字需要发送的数据大于该值,或者接收的较大,需要循环接收,设置缓冲区大小,可以避免循环,
// 接收缓冲区
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));
int nZero=0;
setsockopt (socket,SOL_S0CKET,SO_SNDBUF,(char *)&nZero,sizeof(nZero));
6 recv同理,不经过接收缓冲区直接到套接字缓冲区。
int nZero=0;
setsockopt (socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(int));
7. 一般在发送UDP数据报的时候,希望该socket发送的数据具有广播特性:
BOOL bBroadcast=TRUE;
setsockopt (s,SOL_SOCKET,SO_BROADCAST,(const char*)&bBroadcast,sizeof(BOOL));
- setsockopt
- setsockopt
- setsockopt
- setsockopt()
- setsockopt
- setsockopt()
- setsockopt
- setsockopt()
- setsockopt
- setsockopt
- setsockopt()
- setsockopt
- setsockopt()
- setsockopt
- setsockopt()
- setsockopt
- setsockopt
- setsockopt()
- Java入门 第一季第四章 流程控制语句
- Nginx探索二
- STM32f103 外部引中断
- 一些奇思妙想的模拟题
- BFS--广度优先搜索--图的邻接表
- setsockopt
- java写JSON格式化的方法
- 2440裸机lEd
- Java的多态
- 递归
- NameNode中数据节点的保存(1)——Host2NodesMap
- 关于chrome的字体怎么设置小于12px的问题
- 栈的实现(栈的基础操作)
- ios动画效果学习