linux下,如何查看socket接收缓冲区有多大后修改?

2025-04-15 06:08:59
推荐回答(1个)
回答1:

read的返回值中可以获得大小,read结束之前你是没法知道对方到底发多少给你的。通常的做法,我们会在通讯的报文前加上一些控制信息,比如前4个byte存放数据大小(是否包含这4个byte自己定义)、数据是否分片、每片大小、MAC、控制字符(防止其他程序误发)等等。

socket发送数据时候先把数据发送到socket缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(socket默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的大小,可以通过setsockopt函数实现。