"); //-->
int setsockopt (
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);
The Windows Sockets setsockopt function sets a socket option.
中文解释好像是:设置套接字的选项。
先看如下代码:
setsockopt(SockRaw,IPPROTO_IP,IP_HDRINCL,(char *)&flag,sizeof(int))
这里是设置SockRaw这个套接字的ip选项中的IP_HDRINCL
参考以下资料:
***************************************************************************************************
Linux网络编程--8. 套接字选项
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.
8.1 getsockopt和setsockopt
int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)
int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)
level指定控制套接字的层次.可以取三种值:
1)SOL_SOCKET:通用套接字选项.
2)IPPROTO_IP:IP选项.
3)IPPROTO_TCP:TCP选项.
optname指定控制的方式(选项的名称),我们下面详细解释
optval获得或者是设置套接字选项.根据选项名称的数据类型进行转换
选项名称 说明 数据类型
========================================================================
SOL_SOCKET
------------------------------------------------------------------------
SO_BROADCAST 允许发送广播数据 int
SO_DEBUG 允许调试 int
SO_DONTROUTE 不查找路由 int
SO_ERROR 获得套接字错误 int
SO_KEEPALIVE 保持连接 int
SO_LINGER 延迟关闭连接 struct linger
SO_OOBINLINE 带外数据放入正常数据流 int
SO_RCVBUF 接收缓冲区大小 int
SO_SNDBUF 发送缓冲区大小 int
SO_RCVLOWAT 接收缓冲区下限 int
SO_SNDLOWAT 发送缓冲区下限 int
SO_RCVTIMEO 接收超时 struct timeval
SO_SNDTIMEO 发送超时 struct timeval
linux下,如果一个进程帮定某个port,那当进程结束时,该port仍然会被继续占用几十秒,在这段时间内尝试对
该port的绑定都会返回失败。解决方法:调用setsockopt()启用SO_REUSERADDR属性
SO_REUSERADDR 允许重用本地地址和端口 int
SO_TYPE 获得套接字类型 int
SO_BSDCOMPAT 与BSD系统兼容 int
==========================================================================
IPPROTO_IP
--------------------------------------------------------------------------
IP_HDRINCL 在数据包中包含IP首部 int
IP_OPTINOS IP首部选项 int
IP_TOS 服务类型
IP_TTL 生存时间 int
==========================================================================
IPPRO_TCP
--------------------------------------------------------------------------
TCP_MAXSEG TCP最大数据段的大小 int
TCP_NODELAY 不使用Nagle算法 int
=========================================================================
关于这些选项的详细情况请查看 Linux Programmer"s Manual
8.2 ioctl
ioctl可以控制所有的文件描述符的情况,这里介绍一下控制套接字的选项.
int ioctl(int fd,int req,...)
==========================================================================
ioctl的控制选项
--------------------------------------------------------------------------
SIOCATMARK 是否到达带外标记 int
FIOASYNC 异步输入/输出标志 int
FIONREAD 缓冲区可读的字节数 int
==========================================================================
详细的选项请用 man ioctl_list 查看.
udp固定端口发送
sockaddr_in cliaddr;
cliaddr.sin_family = AF_INET;
cliaddr.sin_port = htons(1025);//BTW:1024到5000间的端口是系统用于自动分配的,小心了
cliaddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(你的客户端socket, (sockaddr*)&cliaddr, sizeof(cliaddr));
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
赋能高端音频功能促进多样化设备创新——XMOS USB Audio平台实现四大功能升级
奥的斯TOEC-40电梯控制电源电路(2)
MCS-51单片机实用子程序库(96年版)
指纹嵌入式开发模块
东芝CV60(9.5~18.5kW)电梯主电路
Microchip PIC18 Explorer开发板
抑制鉴相鉴频器中的窄脉冲
利用T型网络来拓展光电二极管跨阻放大器(TIA)解决方案的适用范围——第一部分:补偿流程
MCS-51单片机内部结构
Rutronik 增加了 DIN 轨电源模块
[原创]单片机读写u盘、usb移动硬盘套件
MCS-51单片机的指令时序
MCS-51单片机地址指针及其应用
指纹嵌入式开发模块
无刷电机控制指南(第一部分)
ARM - The Architecture for The Digital World
不可信模拟器件为关键基础设施带来风险
奥的斯TOEC-40电梯控制电源电路(1)
[原创]DSP网络下载学习板
指纹嵌入式开发模块
开关稳压器的功率损耗
奥的斯TOEC-60电梯控制电源电路
嵌入式CPU的演变和发展
先进封装的界面失效之谜
奥的斯TOEC-2000VF电梯控制电源电路
全方位视频解读TE Connectivity可扩展弹簧夹
鉴相鉴频器(PFD)入门
MCS-51单片机实用子程序库
贸泽开售适用于物联网、工业、传感器和网关应用的 Digi Connect Sensor XRT-M
恩智浦推出用于工业RTLS部署的omlox入门套件