一. 网络属性设置
在前几节的编程中通过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));