修改套接字发送和接收的缓冲区大小

很多情况下,默认的套接字缓冲区大小可能不够用。此时,可以将默认的套接字缓冲区大小改成一个更合适的值。要使用套接字对象的setsockopt()方法修改默认的套接字缓冲区大小。
首先,定义两个常量:SEND_BUF_SIZE和RECV_BUF_SIZE。然后在一个函数中调用套接字实例的setsockopt()方法。修改之前,最好先检查缓冲区大小是多少,发送和接收的缓冲区大小要分开设定。

import socket 
SEND_BUF_SIZE = 4096 
RECV_BUF_SIZE = 4096 
def modify_buff_size(): 
	sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM ) 
	bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF) 
	print("Buffer size [Before]: {}".format(bufsize))
	sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) 
	sock.setsockopt( 
		socket.SOL_SOCKET, 
		socket.SO_SNDBUF, 
		SEND_BUF_SIZE) 
	sock.setsockopt( 
		socket.SOL_SOCKET, 
		socket.SO_RCVBUF, 
		RECV_BUF_SIZE) 
	bufsize = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF) 
	print("Buffer size [After]: {}".format(bufsize))
if __name__ == '__main__': 
	modify_buff_size() 

运行上述脚本后,会显示修改套接字缓冲区大小前后的变化:

Buffer size [Before]: 65536
Buffer size [After]: 4096

版权声明:本文为m0_65635341原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。