有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.
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
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 查看.
|
|
相关推荐
教程名称:Linux Socket网络编程系列文档合集课程目录:【】Linux 网络编程入门教程 clown【】... 套接字选项【】Linux网络编程--9. 服务器模型【】网络 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
5. **套接字选项与套接字级别** - `setsockopt()`和`getsockopt()`函数用于设置和获取Socket的选项,这些选项可以影响Socket的行为,例如超时设置、缓冲区大小等。 - 常见的套接字级别有SOL_SOCKET(适用于所有...
libevent的核心功能是为多种事件源提供一个统一的接口,包括文件描述符、信号、时间事件以及网络套接字等。在本篇中,我们将详细探讨libevent-2.1.11-stable这一稳定版本在CentOS系统中的安装、使用和重要特性。 ...
此外,章节可能还会涵盖套接字选项,如设置超时、禁用Nagle算法、启用TCP_NODELAY等,以及套接字级别的错误处理和性能优化策略。网络编程的安全性也是重要的话题,包括SSL/TLS加密通信、防止缓冲区溢出和输入验证等...
Linux操作系统中的网络编程涉及到各种类型的套接字,包括TCP套接字、UDP套接字以及原始套接字。原始套接字(SOCK_RAW)是一种特殊的套接字类型,允许程序员对网络协议栈进行更底层的控制。在这个场景下,我们将深入...
libevent是一个事件通知库,它能够将来自不同源的事件(如网络套接字、定时器、信号等)抽象出来,提供一个统一的API供应用程序使用。它支持多种事件模型,包括epoll(Linux)、kqueue(FreeBSD)、event ports...
9. **网络编程**:在Linux下,C程序员可以使用套接字API进行网络通信,包括`socket`创建套接字,`bind`绑定地址,`listen`监听连接,`accept`接受连接,`send`和`recv`发送接收数据等。 10. **动态库链接**:C程序...
8. **网络编程**:在Linux下,网络编程涉及套接字(socket)API,包括TCP/IP协议栈、UDP通信、套接字选项等,这对于开发网络应用至关重要。 9. **信号处理**:理解信号机制,如何注册信号处理器(signal handler)...
Linux 网络编程基础 Linux 网络编程是一种在 Linux 操作系统下进行网络通信的编程方式...Linux 网络编程是基于套接字和网络函数的编程方式,通过选择合适的网络协议和使用正确的套接字选项,可以实现可靠的网络通信。
9. **网络编程**:涉及socket编程,包括TCP/IP连接、套接字选项、服务器和客户端的实现等。 10. **并发和多线程**:介绍如何创建和管理线程,以及同步和互斥的概念,如mutex, semaphore, condition variable等。 ...
对于开发者来说,LibreOffice还提供了API(应用程序编程接口),允许编写自定义宏和插件,以实现自动化任务或集成到其他系统中。例如,Python和Java开发者可以利用这些API创建强大的办公自动化解决方案。 总的来说...
7. **套接字选项和属性**:`setsockopt()`和`getsockopt()`函数可以设置或获取套接字的属性,如TCP_NODELAY等。 8. **安全通信**:如SSL/TLS加密套接字,提供安全的网络传输。 这个压缩包“linux-socket-编程C-S”...
通过学习这些示例代码,开发者可以深入理解如何在Linux环境中使用C语言实现UDP通信,包括错误处理、数据包的发送与接收、套接字选项的设置等。此外,通过实践,还能掌握如何处理并发连接,以及如何利用不同类型的...
7. **网络编程相关**:TinyFTP使用套接字(socket)编程实现网络通信,涉及到IP地址、端口号、套接字选项、阻塞/非阻塞模式等概念。 8. **多线程或多进程**:为了同时处理多个客户端连接,FTP服务器通常采用多线程...
- **Socket**(套接字)是一种用于进程间通信的机制,允许一个程序通过网络与其他程序进行交流。 - 在Unix系统中,一切皆视为文件,包括网络连接。因此,网络通信可以通过文件描述符进行操作。 - **目的与应用...
在Linux中,这些服务通常由独立的守护进程(daemon)实现,它们通过套接字接口与下层的协议栈进行交互。 "linux网络协议栈分析一.pdf"文档可能详细阐述了以上各层的功能,以及Linux如何实现这些功能的具体细节。...
6. **协议支持**: Libevent不仅支持TCP和UDP,还支持SSL/TLS、信号处理、管道和本地套接字等多种协议和机制。 7. **性能优化**: 通过使用不同的事件调度策略(如epoll、kqueue、poll等),libevent能根据操作系统的...
9. **高级主题**:涵盖TCP选项、套接字选项、 linger选项、socketpair()、信号驱动I/O、套接字级广播等高级特性。 10. **UDP编程**:除了TCP,书中的内容还包括了使用UDP协议进行网络通信的方法,它不保证数据顺序...
1. **初始化套接字**:代码首先会调用`socket()`函数创建一个TCP套接字,设置相应的套接字选项,如SO_REUSEADDR,以允许立即重启服务。 2. **绑定(Bind)**:服务器需要绑定一个IP地址和端口号,通常使用`INADDR_...
5. **套接字选项和控制消息**:套接字选项可以改变套接字的行为,如设置超时、禁用Nagle算法等。控制消息如SOCK_CTRLMSG用于传递附加信息,如套接字地址和时间戳。 6. **并发服务器设计**:书中讨论了多线程、多...