可以写入套接字/从套接字读取的数据大小

可以写入套接字/从套接字读取的数据大小

我想知道是否有一种简单的方法可以找到 Linux 套接字支持的最大大小? (这是可配置的吗?如果可以的话在哪里?)

例如,网络上找到的大多数套接字示例都会发送“Hello Socket”或其他一些小字符串,但是如果我将整个战争与和平插入插座,什么时候会断?

既然一切都是文件,那么它是最大文件大小吗? socket连接不同文件系统时是如何协调的?

我对流套接字最感兴趣。

答案1

你没有说什么类型的套接字。

流套接字

您可以发送(根据定义)无限量的数据。如果不能一次性全部缓冲或发送,或者接收方不能一次接收全部数据,则发送将阻塞(对于阻塞套接字)或返回部分写入的字节数或EAGAIN(对于非阻塞套接字)。

数据报套接字

这取决于协议。 UDPv4 仅支持每个数据报 65536 字节。 UDPv6 支持更多。 UNIX 域套接字可能支持更多:在这种情况下,您可能只是受到内存的限制。

答案2

net.core.rmem_maxnet.core.wmem_max你的事。您可以检查它们的值

# sysctl net.core.rmem_max

并将它们设置为

# sysctl -w net.core.rmem_max=8388608

这些分别是接收和发送时的套接字缓冲区大小。它们也有默认值 -rmem_defaultwmem_default

相关内容