原创不易,点个赞呗!
一般情况,我们并不关心 socket
的默认缓冲区大小。
但最近,使用非租塞 socekt
通信时,遇到了一些奇怪的问题,需要查看 socekt
的缓冲区大小,以此证明我的代码没问题,是处理端读取太慢,甩锅给别人…程序员之间的博弈,哈哈哈
利用 socekt
选项,可以查看或修改缓冲区大小,记录代码如下:
# _*_ coding:utf-8 _*_
"""
查看并修改socket缓存区大小
"""
import socket
sock = socket.socket()
# 查看默认发送接收缓冲区大小
recv_buff = sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
send_buff = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
print(f'默认接收缓冲区大小:{recv_buff}。默认发送缓冲区大小:{send_buff}')
# 设置接收缓冲区大小为1024
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
# 设置发送缓冲区大小为2048
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2048)
# 查看修改后发送接收缓冲区大小
recv_buff = sock.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
send_buff = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
print(f'修改后接收缓冲区大小:{recv_buff}。修改后发送缓冲区大小:{send_buff}')
运行结果:
默认接收缓冲区大小:65536。默认发送缓冲区大小:65536
修改后接收缓冲区大小:1024。修改后发送缓冲区大小:2048
END.
工作之余,喜欢写些东西,涉及编程、生活、热点等。感兴趣的微信朋友,可以搜一搜公众号:【程序员的一天】,欢迎关注、支持,谢谢!