很多情况下,默认的套接字缓冲区大小可能不够用。此时,可以将默认的套接字缓冲区大小改成一个更合适的值。要使用套接字对象的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版权协议,转载请附上原文出处链接和本声明。