原来跑的好好的代码,重构了一部分发现突然报错了。删减下来最小代码重现:
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
x=s.recvfrom(1024)
第二行会报
OSError: [WinError 10022] An invalid argument was supplied
google之,解释如下:
原因是因为UDP如果一上来直接sendto的话,会随机绑定一个port
而如果是先recvfrom的话,行为因系统而定。linux下可能跑起来,但windows下可能会绑定port 0,然后就挂了。
顺便说一句sogou啥的真的啥都搜不出。。。。