`
unsoundboy
  • 浏览: 63307 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Linux网络编程--8. 套接字选项

阅读更多
Linux网络编程--8. 套接字选项
http://linuxc.51.net 作者:hoyt (2001-05-08 11:23:24)


有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了. 


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 查看. 
分享到:
评论

相关推荐

    LinuxSocket网络编程系列文档合集

    教程名称:Linux Socket网络编程系列文档合集课程目录:【】Linux 网络编程入门教程 clown【】... 套接字选项【】Linux网络编程--9. 服务器模型【】网络 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    实战linux socket编程--示例源码.rar_C++ socket_linux 源码_socket 编程 linux_s

    5. **套接字选项与套接字级别** - `setsockopt()`和`getsockopt()`函数用于设置和获取Socket的选项,这些选项可以影响Socket的行为,例如超时设置、缓冲区大小等。 - 常见的套接字级别有SOL_SOCKET(适用于所有...

    libevent-2.1.11-stable.tar.gz

    libevent的核心功能是为多种事件源提供一个统一的接口,包括文件描述符、信号、时间事件以及网络套接字等。在本篇中,我们将详细探讨libevent-2.1.11-stable这一稳定版本在CentOS系统中的安装、使用和重要特性。 ...

    Linux程序设计-网络编程-第9章.rar

    此外,章节可能还会涵盖套接字选项,如设置超时、禁用Nagle算法、启用TCP_NODELAY等,以及套接字级别的错误处理和性能优化策略。网络编程的安全性也是重要的话题,包括SSL/TLS加密通信、防止缓冲区溢出和输入验证等...

    Linux操作系统网络编程--原始套接字

    Linux操作系统中的网络编程涉及到各种类型的套接字,包括TCP套接字、UDP套接字以及原始套接字。原始套接字(SOCK_RAW)是一种特殊的套接字类型,允许程序员对网络协议栈进行更底层的控制。在这个场景下,我们将深入...

    libevent-2.0.20-stable.tar.gz

    libevent是一个事件通知库,它能够将来自不同源的事件(如网络套接字、定时器、信号等)抽象出来,提供一个统一的API供应用程序使用。它支持多种事件模型,包括epoll(Linux)、kqueue(FreeBSD)、event ports...

    linux-c-develop.rar

    9. **网络编程**:在Linux下,C程序员可以使用套接字API进行网络通信,包括`socket`创建套接字,`bind`绑定地址,`listen`监听连接,`accept`接受连接,`send`和`recv`发送接收数据等。 10. **动态库链接**:C程序...

    Linux-application-development.rar_Linux编程实例

    8. **网络编程**:在Linux下,网络编程涉及套接字(socket)API,包括TCP/IP协议栈、UDP通信、套接字选项等,这对于开发网络应用至关重要。 9. **信号处理**:理解信号机制,如何注册信号处理器(signal handler)...

    Linux网络编程-基础

    Linux 网络编程基础 Linux 网络编程是一种在 Linux 操作系统下进行网络通信的编程方式...Linux 网络编程是基于套接字和网络函数的编程方式,通过选择合适的网络协议和使用正确的套接字选项,可以实现可靠的网络通信。

    Linux-C-function-user.rar_linux user

    9. **网络编程**:涉及socket编程,包括TCP/IP连接、套接字选项、服务器和客户端的实现等。 10. **并发和多线程**:介绍如何创建和管理线程,以及同步和互斥的概念,如mutex, semaphore, condition variable等。 ...

    libreoffice-external-tar.tar.gz

    对于开发者来说,LibreOffice还提供了API(应用程序编程接口),允许编写自定义宏和插件,以实现自动化任务或集成到其他系统中。例如,Python和Java开发者可以利用这些API创建强大的办公自动化解决方案。 总的来说...

    linux-socket-C-S.rar_C/S linux_linux c 串口_linux socket_linux 串口C

    7. **套接字选项和属性**:`setsockopt()`和`getsockopt()`函数可以设置或获取套接字的属性,如TCP_NODELAY等。 8. **安全通信**:如SSL/TLS加密套接字,提供安全的网络传输。 这个压缩包“linux-socket-编程C-S”...

    Linux-net-programC-language.rar_linux UDP_linux socket udp_linux

    通过学习这些示例代码,开发者可以深入理解如何在Linux环境中使用C语言实现UDP通信,包括错误处理、数据包的发送与接收、套接字选项的设置等。此外,通过实践,还能掌握如何处理并发连接,以及如何利用不同类型的...

    tinyftp-0.2.tar.gz

    7. **网络编程相关**:TinyFTP使用套接字(socket)编程实现网络通信,涉及到IP地址、端口号、套接字选项、阻塞/非阻塞模式等概念。 8. **多线程或多进程**:为了同时处理多个客户端连接,FTP服务器通常采用多线程...

    C语言SOCKET编程--超级完整.doc

    - **Socket**(套接字)是一种用于进程间通信的机制,允许一个程序通过网络与其他程序进行交流。 - 在Unix系统中,一切皆视为文件,包括网络连接。因此,网络通信可以通过文件描述符进行操作。 - **目的与应用...

    linux-network-protocol-stack-analysis.rar_网络协议栈

    在Linux中,这些服务通常由独立的守护进程(daemon)实现,它们通过套接字接口与下层的协议栈进行交互。 "linux网络协议栈分析一.pdf"文档可能详细阐述了以上各层的功能,以及Linux如何实现这些功能的具体细节。...

    libevent-2.1.8-stable.tar.gz

    6. **协议支持**: Libevent不仅支持TCP和UDP,还支持SSL/TLS、信号处理、管道和本地套接字等多种协议和机制。 7. **性能优化**: 通过使用不同的事件调度策略(如epoll、kqueue、poll等),libevent能根据操作系统的...

    UNIX网络编程 卷1:套接字联网API源代码

    9. **高级主题**:涵盖TCP选项、套接字选项、 linger选项、socketpair()、信号驱动I/O、套接字级广播等高级特性。 10. **UDP编程**:除了TCP,书中的内容还包括了使用UDP协议进行网络通信的方法,它不保证数据顺序...

    server-on-pc-linux.rar_linux TCP 服务器_linux tcp server_tcp server

    1. **初始化套接字**:代码首先会调用`socket()`函数创建一个TCP套接字,设置相应的套接字选项,如SO_REUSEADDR,以允许立即重启服务。 2. **绑定(Bind)**:服务器需要绑定一个IP地址和端口号,通常使用`INADDR_...

    unix网络编程卷1:套接字联网api(第3版)

    5. **套接字选项和控制消息**:套接字选项可以改变套接字的行为,如设置超时、禁用Nagle算法等。控制消息如SOCK_CTRLMSG用于传递附加信息,如套接字地址和时间戳。 6. **并发服务器设计**:书中讨论了多线程、多...

Global site tag (gtag.js) - Google Analytics