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

在尝试实现Python UDP收发一体机以进行网络穿透时,遇到发送和接收在同一端口产生冲突的问题,表现为[10054]错误。通过多线程解决异步问题,但接收端仍报错。添加异常处理可避免错误,但可能引发丢包。问题根源在于发送端缺乏接收确认,推测可能与UDP的无连接特性或端口管理有关。解决方案是确保有接收数据的对应程序。对于UDP为何在无接收端时发送错误,原因尚不明确。
摘要由CSDN通过智能技术生成

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

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

前提

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

现状

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

结尾来了

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

疑惑

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值