python编程之UDP收发同一端口多线程[10054]错误记录

python编程之UDP收发同一端口多线程[10054]错误记录

想要做一个python的UDP收发一体机来实现网络穿透。目前遇到的问题是如何保持收发互不干扰。

前提

收发同一程序已经做到,但是收与发为异步进行。只能实现单工通信。而且无法保障在等待输入的过程没有需要接收的数据。通过网上冲浪,决定使用多线程的方式来进行实现。

现状

目前采用多线程的方式,接受服务一个线程,发送服务一个线程。但是目前的问题在于接收服务端会报错。报错代码为[10054]。原因不详。
python编程之UDP收发同一端口多线程[10054]错误记录
加入异常处理机制后可跳过异常,可正常接收信息。暂未大量连续跑数据。不清楚此机制是否会引发丢包。
python编程之UDP收发同一端口多线程[10054]错误记录“10054又来了”即报错处理。“hello world”是接收的数据。

结尾来了

经过测试发现,发生这个问题的原因在于发送数据服务没有接收段,就是发送出去了消息,但是没有人收,于是产生了这个问题。当有一个接收数据包的程序时整个程序就能正常执行了。

疑惑

UDP作为无连接数据包为什么发送数据没有接收也会产生错误呢?这个问题暂时没有找到答案。目前推测有两个原因:

  1. 因为在同一台计算机上,所以UDP底层的首发控制有点问题?(python层面,非物理机层面)
  2. UDP具有发送失败报告?或发送失败会占用端口?

仅仅为猜测。等有答案再来补坑。