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

NWS*_*NWS 5 linux files socket

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

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

由于一切都是一个文件,它是最大文件大小吗?socket连接不同的文件系统时如何协调?

我对流套接字最感兴趣。

Cel*_*ada 8

你没有说是什么类型的插座。

流套接字

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

数据报套接字

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


小智 8

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

# sysctl net.core.rmem_max
Run Code Online (Sandbox Code Playgroud)

并将它们设置为

# sysctl -w net.core.rmem_max=8388608
Run Code Online (Sandbox Code Playgroud)

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