45.Linux编程---网络属性设置
一. 网络属性设置
在前几节的编程中通过ctrl+C退出服务器端后,原本好用的代码再次执行的时候,却连接不上了,大约经过几分钟之后又能重新连接,后来添加了以下代码后,问题就解决了。
int b_reuse =1;
setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&b_reuse,sizeof(int));
那么这两句代码是什么意思呢??
其实这个函数就是改变了套接字fd的属性。
那么我们详细看一下这个函数。
函数名 |
int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen); |
||||||||||
所需头文件 |
#include <sys/types.h> |
||||||||||
功能 |
通过IP获取主机的完整信息 |
||||||||||
传入参数 |
|
||||||||||
返回值 |
成功执行时,返回0。失败返回-1,errno被设为以下的某个值 |
注:optname选项可设置如下值:
可以改这么多属性呢,可以详细的进行学习一下,使用上都是一样的。
/*允许绑定地址快速重用 */
int b_reuse = 1;
setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &b_reuse, sizeof (int));
/* 允许广播 */
int b_br = 1;
setsockopt (fd, SOL_SOCKET, SO_BROADCAST, &b_br, sizeof (int));
/*设置接收超时*/
struct timeval tout;
tout.tv_sec = 5;
tout.tv_usec = 0;
setsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, &tout, sizeof (struct timeval));