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>
#include <sys/socket.h>

功能

通过IP获取主机的完整信息

传入参数

sock

level

 optname

optval

optlen

将要被设置选项的套接字

选项所在的协议层。

1)SOL_SOCKET:通用套接字选项. (应用层)
2)IPPROTO_IP:IP选项. (网络层)
3)IPPROTO_TCP:TCP选项.(传输层)

需要访问的选项名

指向包含新选项值的缓冲

选项的长度

 

返回值

成功执行时,返回0。失败返回-1,errno被设为以下的某个值  
EBADF:sock不是有效的文件描述词
EFAULT:optval指向的内存并非有效的进程空间
EINVAL:在调用setsockopt()时,optlen无效
ENOPROTOOPT:指定的协议层不能识别选项
ENOTSOCK:sock描述的不是套接字

 

注: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));

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值