SO_RCVLOWAT 用于标识超过多少可以接受函数响应,通常为1 SO_SNDLOWAT 用于标识超过多少,可以告知可写了,通常为2048 10. SO_RCVTIMEO 和 SO_SNDTIMEO 用于给发送和接受一个超时值,默认是禁止的。开启后:当超过时间内没有发出则放弃发送 11. SO_REUSEADDR 默认关闭:开启后,将可以解决下面4个问题 允许在同一个端口...
这些选项包括:SO_DEBUG、SO_DONTROUTE、SO_KEEPALIVE、SO_LINGER、SO_OOBINLINE、SO_RCVBUF、SO_RCVLOWAT、SO_SNDBUF、SO_SNDLOWAT、TCP_MAXSEG和TCP_NODELAY。 对于客户端而言,这些socket选项则应该在调用connect函数之前设置,因为connect调用成功返回之后,TCP三次握手已完成。 SO_REUSEADDR选项 前面讨论过TCP连接的TIME_...
SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。 在Linux中,缓冲区内的最小字节数是固定的,为1。即将sock->sk->sk_rcvlowat固定赋值为1。 SO_RCVTIMEO,设置接收超时时间。 该选项最终将接收超时时间赋给sock->sk->sk_rcvtimeo。 SO_SNDTIMEO,设置发送超时时间。 该选项最终将发送超时时间赋给sock->sk->...
SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。 在Linux中,缓冲区内的最小字节数是固定的,为1。即将sock->sk->sk_rcvlowat固定赋值为1。 SO_RCVTIMEO,设置接收超时时间。 该选项最终将接收超时时间赋给sock->sk->sk_rcvtimeo。 SO_SNDTIMEO,设置发送超时时间。 该选项最终将发送超时时间赋给sock->sk->...
socket内核接收缓冲区中的字节数大于或等于其低水位标记SO_RCVLOWAT。此时我们可以无阻塞地对该socket,并且读操作返回的字节数大于0。 socket通信的对方关闭连接,此时读操作返回0。 监听socket上有新的连接请求。 socekt上有未处理的错误,此时我们可以使用getsockopt来读取和清除该错误。
那就意味着,默认情况下,只要缓冲区中有数据,那就是可读的。我们可以通过使用SO_RCVLOWAT套接字选项(参见setsockopt函数)来设置该套接字的低水位大小。此种描述符就绪(可读)的情况下,当我们使用read/recv等对该套接字执行读操作的时候,套接字不会阻塞,而是成功返回一个大于0的值(即可读数据的大小)。
可以使用SO_RCVLOWAT套接字选项设置该套接字的低水位标记。对于TCP和UDP套接字而言,其默认值为1; 该套接字读处于半关闭状态(即TCP连接接收到了FIN); 该套接字是一个监听套接字且已完成连接队列不为空; 该套接字错误待处理。 对于写,满足以下4种条件任意一种即返回写就绪: 该套接字发送缓冲区中的可用空间...
SO_ACCEPTCONN是DWORD (布尔)返回套接字是否处于侦听模式。 此选项仅对面向连接的协议有效。 SO_BROADCAST是是DWORD (布尔)配置用于发送广播数据的套接字。 此选项仅对支持广播 (IPX 和 UDP 的协议有效,例如) 。 SO_BSP_STATE是CSADDR_INFO返回本地地址、本地端口、远程地址、远程端口、套接字类型和套接字使...
6. SO_RCVLOWAT 和 SO_SNDLOWAT套接字选项 每个套接字还有一个接收低水位标记和一个发送低水位标记。他们由select函数使用,这两个套接字选项允许我们修改这两个低水位标记。 接收低水位标记是让select返回“可读”时,套接字接收缓冲区中所需的数据量。对于TCP,UDP和SCTP套接字,其默认值为1。发送低水位标记是让...
SO_TIMESTAMP,打开或关闭数据报中的时间戳接收。 该选项根据option_value的值,清或置sock->sk->sk_flag中的SOCK_RCVTSTAMP位,如果打开,则还需设sock->sk->sk_flag中的SOCK_TIMESTAMP位,同时,将全局变量netstamp_needed加1。 SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。