我在编写udp套接字接收器程序时遇到问题。你知道吗
我不使用udp_source.start_transmission()
控制传输源(只在何时启动)。你知道吗
我还使用Wireshark监控网络流量。你知道吗
根据Wireshark-我得到了所有的数据。e、 g:源发送的udp数据包有60000000字节。你知道吗
然而,在Python中,程序在大约3/4的数据之后挂起在tmp = sock.recvfrom(1500)
。
e、 g:while循环未达到停止条件。你知道吗
sock = socket.socket(family=socket.AF_INET,
type=socket.SOCK_DGRAM, proto=socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 512 * 1024)
sock.connect((ip, port))
udp_source.start_transmission()
cntr = 0
l = []
total_size = 60000000
rec_bytes_len = 0
while rec_bytes_len < total_size:
r, w, e = select.select([sock], [], [sock], 60)
if r:
tmp = sock.recvfrom(1500)
rec_bytes_len += len(tmp)
cntr += 1
if cntr % 1000 == 0:
print(cntr)
我试过:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024 * 512 * 1024)
-同样的行为sock.settimeout(60)
-相同的行为有人能帮忙吗?你知道吗
谢谢你。你知道吗
编辑
设法使它工作。 结果我没有增加足够的缓冲。 一旦我使缓冲区非常大(1 GB),我得到了所有的数据通过。 不知道为什么会这样,但这是。。。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐