python编程之UDP收发同一端口多线程[10054]错误记录
python编程之UDP收发同一端口多线程[10054]错误记录
想要做一个python的UDP收发一体机来实现网络穿透。目前遇到的问题是如何保持收发互不干扰。
前提
收发同一程序已经做到,但是收与发为异步进行。只能实现单工通信。而且无法保障在等待输入的过程没有需要接收的数据。通过网上冲浪,决定使用多线程的方式来进行实现。
现状
目前采用多线程的方式,接受服务一个线程,发送服务一个线程。但是目前的问题在于接收服务端会报错。报错代码为[10054]。原因不详。
加入异常处理机制后可跳过异常,可正常接收信息。暂未大量连续跑数据。不清楚此机制是否会引发丢包。“10054又来了”即报错处理。“hello world”是接收的数据。
结尾来了
经过测试发现,发生这个问题的原因在于发送数据服务没有接收段,就是发送出去了消息,但是没有人收,于是产生了这个问题。当有一个接收数据包的程序时整个程序就能正常执行了。
疑惑
UDP作为无连接数据包为什么发送数据没有接收也会产生错误呢?这个问题暂时没有找到答案。目前推测有两个原因:
- 因为在同一台计算机上,所以UDP底层的首发控制有点问题?(python层面,非物理机层面)
- UDP具有发送失败报告?或发送失败会占用端口?
仅仅为猜测。等有答案再来补坑。