获取设置套接字选项:getsockopt, setsockopt
首先看个文件
环境cygwin
asm/socket.h
//$ cat socket.h
/* asm/socket.hThis file is part of Cygwin.This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H#include <cygwin/if.h>#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
#define IOC_VOID 0x20000000 /* no parameters */
#define IOC_OUT 0x40000000 /* copy out parameters */
#define IOC_IN 0x80000000 /* copy in parameters */#define _IO(x,y) (IOC_VOID|(x<<8)|y)
#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)#define SIOCATMARK _IOR('s', 7, long) /* at oob mark? */
#define FIONREAD _IOR('f', 127, long) /* get # bytes to read */
#define SIOCINQ FIONREAD
/* Compatible with termios.h */
#define FIONBIO 0x8004667e /* set/clear non-blocking i/o */
#define FIOASYNC _IOW('f', 125, long) /* set/clear async i/o */
#define SIOCSHIWAT _IOW('s', 0, long) /* set high watermark */
#define SIOCGHIWAT _IOR('s', 1, long) /* get high watermark */
#define SIOCSLOWAT _IOW('s', 2, long) /* set low watermark */
#define SIOCGLOWAT _IOR('s', 3, long) /* get low watermark *//* Needed for if queries */
#define SIOCGIFCONF _IOW('s', 100, struct ifconf) /* get if list */
#define SIOCGIFFLAGS _IOW('s', 101, struct ifreq) /* Get if flags */
#define SIOCGIFADDR _IOW('s', 102, struct ifreq) /* Get if addr */
#define SIOCGIFBRDADDR _IOW('s', 103, struct ifreq) /* Get if broadcastaddr */
#define SIOCGIFNETMASK _IOW('s', 104, struct ifreq) /* Get if netmask */
#define SIOCGIFHWADDR _IOW('s', 105, struct ifreq) /* Get hw addr */
#define SIOCGIFMETRIC _IOW('s', 106, struct ifreq) /* get metric */
#define SIOCGIFMTU _IOW('s', 107, struct ifreq) /* get MTU size */
#define SIOCGIFINDEX _IOW('s', 108, struct ifreq) /* get if index */
#define SIOGIFINDEX SIOCGIFINDEX /* backward compatibility w/ Linux typo. */
#define SIOCGIFFRNDLYNAM _IOW('s', 109, struct ifreq) /* get friendly if name */
#define SIOCGIFDSTADDR _IOW('s', 110, struct ifreq) /* Get if dstaddr */#define SOL_SOCKET 0xffff /* options for socket level */#define SO_DEBUG 0x0001 /* turn on debugging info recording */
#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
#define SO_REUSEADDR 0x0004 /* allow local address reuse */
#define SO_KEEPALIVE 0x0008 /* keep connections alive */
#define SO_DONTROUTE 0x0010 /* just use interface addresses */
#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
#define SO_LINGER 0x0080 /* linger on close if data present */
#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
#define SO_DONTLINGER (unsigned int)(~SO_LINGER)
#define SO_PEERCRED 0x0200 /* same as getpeereid */
#define SO_PASSCRED 0x0400 /* enable receiving of credentials *//** Additional options.*/
#define SO_SNDBUF 0x1001 /* send buffer size */
#define SO_RCVBUF 0x1002 /* receive buffer size */
#define SO_SNDLOWAT 0x1003 /* send low-water mark */
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
#define SO_SNDTIMEO 0x1005 /* send timeout */
#define SO_RCVTIMEO 0x1006 /* receive timeout */
#define SO_ERROR 0x1007 /* get error status and clear */
#define SO_TYPE 0x1008 /* get socket type */#endif /* _ASM_SOCKET_H */
sys/socket.h
//$ cat sys/socket.h
/* sys/socket.hThis file is part of Cygwin.This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */#ifndef _SYS_SOCKET_H
#define _SYS_SOCKET_H#include <features.h>
#include <cygwin/socket.h>#ifdef __cplusplus
extern "C"
{
#endif#ifndef __INSIDE_CYGWIN_NET__int accept (int, struct sockaddr *__peer, socklen_t *);int accept4 (int, struct sockaddr *__peer, socklen_t *, int flags);int bind (int, const struct sockaddr *__my_addr, socklen_t __addrlen);int connect (int, const struct sockaddr *, socklen_t);int getpeername (int, struct sockaddr *__peer, socklen_t *);int getsockname (int, struct sockaddr *__addr, socklen_t *);int listen (int, int __n);ssize_t recv (int, void *__buff, size_t __len, int __flags);ssize_t recvfrom (int, void *__buff, size_t __len, int __flags,struct sockaddr *__from, socklen_t *__fromlen);ssize_t recvmsg(int s, struct msghdr *msg, int flags);ssize_t send (int, const void *__buff, size_t __len, int __flags);ssize_t sendmsg(int s, const struct msghdr *msg, int flags);ssize_t sendto (int, const void *, size_t __len, int __flags,const struct sockaddr *__to, socklen_t __tolen);int setsockopt (int __s, int __level, int __optname, const void *optval,socklen_t __optlen);int getsockopt (int __s, int __level, int __optname, void *__optval,socklen_t *__optlen);int shutdown (int, int);int socket (int __family, int __type, int __protocol);int sockatmark (int __fd);int socketpair (int __domain, int __type, int __protocol, int __fds[2]);struct servent *getservbyname (const char *__name, const char *__proto);
#endif#ifdef __cplusplus
};
#endif#if __SSP_FORTIFY_LEVEL > 0
#include <ssp/socket.h>
#endif#endif /* _SYS_SOCKET_H */
说明
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
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
========================================================================
链接:https://blog.csdn.net/qq_41097897/article/details/82845404
获取设置套接字选项:getsockopt, setsockopt相关推荐
- C语言socket getsockopt() setsockopt()函数(获取和设置套接口的选项?)(套接字级别SOL_SOCKET)
文章目录 man 文档(越看越懵逼啊!) 解释 getsockopt()函数用于获取任意类型.任意状态套接口的选项当前值,并把结果存入optval. setsockopt()函数用于任意类型.任意状态 ...
- C语言socket getsockopt() setsockopt()函数(获取和设置套接口的选项?)
文章目录 man 文档(越看越懵逼啊!) 解释 getsockopt()函数用于获取任意类型.任意状态套接口的选项当前值,并把结果存入optval. setsockopt()函数用于任意类型.任意状态 ...
- UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)
有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项. int getsockopt(int sockfd,int level,int optname,void *op ...
- 设置套接字属性和获取套接字属性,举例子设置套接字端口可重用
设置套接字属性 头文件 #include <sys/types.h> #include <sys/socket.h> 定 义 函 数 int setsockopt(int s, ...
- linux 套接字选项定义
2019独角兽企业重金招聘Python工程师标准>>> linux 套接字选项定义 2011-07-28 14:31 1.closesocket(一般不会立即关闭而经历TIME_WA ...
- 常用套接字选项(SOL_SOCKET级别)
setsockopt方法 [cpp] view plaincopyprint? #include int setsockopt( int socket, int level, int option_n ...
- 教你使用 SO_REUSEPORT 套接字选项提升服务性能
前言 Linux 网络栈中有一个相对较新的特性--SO_REUSEPORT 套接字选项,可以使用它来提升你的服务性能. 图 1: 上面的服务是使用并行监听器来避免请求连接瓶颈,而下面的服务只使用一个监 ...
- 字选项套接字选项-java教程
今天一直在研究字选项之类的问题,现在正好有机会和大家分享一下. ================================================ 套接字机制供给了两个套接字选项接口来 ...
- 套接字选项SO_KEEPALIVE
套接字选项SO_KEEPALIVE是保活套接字,它会在规定的时间内给对端发送探测分节,用tcpdump抓包可以看到.这个规定的时间就是net.ipv4.tcp_keepalive_time,在系统中可 ...
最新文章
- Ubuntu 14.04环境变量修改
- 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波1 - 灰度变换和空间滤波基础、Sigmoid激活函数
- android studio 单元测试用法,基于Android Studio2.1.1 进行单元测试完整教程
- 极大强连通分量的Tarjan算法
- Java的15种锁总结
- 使用smtplib库隐藏授权码发送邮件
- 三菱PLC软件有LINUX版本吗,三菱PLC编程软件(GX Developer)
- springboot+vue+easychart报表导出前后台
- java 内存文件_Java内存映射文件(Memory Mapped Files)
- CCF-CSP真题《202206-2—寻宝大冒险》思路+python满分题解
- 迷宫问题(MAZE)
- golang学习之go方法
- scrapy 中 COOKIES_ENABLED 设置
- 原创科幻短篇《霾星》
- VMwareESX常用命令和IP地址修改
- 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)
- 基金从业资格考试总结
- List逆向遍历、反向遍历--Iterator详解
- 包裹侠查快递单号_包裹侠快递查询
- Euler diagram
热门文章
- 详解Java类对象执行顺序
- Vue-Treeselect 的下拉菜单不出Table的框
- 重新解释i++和++i
- Luogu P4478 [BJWC2018]上学路线 卢卡斯+组合+CRT
- postman连接mysql执行操作
- DAG最长路问题 hdu-1224
- 几个常见翻译引擎的不完全对比
- go 依赖注入 哪个好_go与java的依赖注入实现的一些差异
- 话唠黄金机器人_用了接吻教学机器人以后......哈哈哈哈不能我一个人瞎!
- 红安一中高考2021成绩查询,红安一中2019高考喜报成绩、一本二本上线人数情况...