如何使用Python';s套接字库?

如何使用Python';s套接字库?,python,python-2.7,sockets,udp,python-sockets,Python,Python 2.7,Sockets,Udp,Python Sockets,我已经使用Python2.7的套接字库工作了几周了。出现了一个请求,要求我只接收通过UDP广播的消息的一部分。消息长度是动态的,但我试图提供一种解决方案,只读取此消息的第一部分。但是,只要我提供的缓冲区大小小于广播的缓冲区大小,我就会收到以下错误: socket.error:[Errno 10040]在数据报套接字上发送的消息大于内部消息缓冲区或某些其他网络限制,或者用于接收数据报的缓冲区小于数据报本身 这个错误让我感到困惑,因为我在文档和堆栈上的多个问题中读到,这个方法只能读取到提供的缓冲区大

我已经使用Python2.7的套接字库工作了几周了。出现了一个请求,要求我只接收通过UDP广播的消息的一部分。消息长度是动态的,但我试图提供一种解决方案,只读取此消息的第一部分。但是,只要我提供的缓冲区大小小于广播的缓冲区大小,我就会收到以下错误:

socket.error:[Errno 10040]在数据报套接字上发送的消息大于内部消息缓冲区或某些其他网络限制,或者用于接收数据报的缓冲区小于数据报本身

这个错误让我感到困惑,因为我在文档和堆栈上的多个问题中读到,这个方法只能读取到提供的缓冲区大小,然后丢弃其余的。我还非常确定这与网络错误无关,因为我可以提供一个大于消息大小的缓冲区,并且它工作正常。下面提供的示例代码:

import socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind((some_ip, some_udp_port))

# Scenario 1: Only want to read 244 bytes, but returns 10040 error. Have tried this with recvfrom as well. Have also tried 256 (for power of 2)
data = udp_socket.recv(244)

# Scenario 2: Provide buffer bigger than what is being sent, doesn't return 10040 error.
data = udp_socket.recv(1024)
我是否误解了max buffer参数的用途?我是否可以在每条消息中接收到一定数量的字节