位置: 编程技术 - 正文

Python的Socket编程过程中实现UDP端口复用的实例分享(python socket用法)

编辑:rootadmin

推荐整理分享Python的Socket编程过程中实现UDP端口复用的实例分享(python socket用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python3 socket编程,python sockets,python中socket编程,python socket setsockopt,python socketio,python sockets,python3 socket编程,python socket.socket,内容如对您有帮助,希望把文章链接给更多的朋友!

关于端口复用

一个套接字不能同时绑定多个端口,如果客户端想绑定端口号,一定要调用发送信息函数之前绑定( bind )端口,因为在发送信息函数( sendto, 或 write ),系统会自动给当前网络程序分配一个随机端口号,这相当于随机绑定了一个端口号,这里只会分配一次,以后通信就以这个随机端口通信,我们再绑定端口号的话,就会绑定失败。如果我们放在发送信息函数( sendto, 或 write )之前绑定,那样程序将以我们绑定的端口号发送信息,不会再随机分配一个端口号。实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口,这时候,别的套接字就无法使用这个端口。那如何让两个套接字都能成功绑定一个端口呢&#;这时候就需要要到端口复用了。端口复用允许在一个应用程序可以把 n 个套接字绑在一个端口上而不出错。端口复用能在系统已开放的端口上进行通讯,只对输入的信息进行字符匹配,不对网络数据进行任何拦截、复制类操作,所以对网络数据的传输性能丝毫不受影响。但要注意,建立连接后服务端程序占用极少系统资源,被控端不会在系统性能上有任何察觉,通常被后门木马所利用。在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分,也就是说低级权限的用户是可以重绑定在高级权限如服务启动的端口上的,这是非常重大的一个安全隐患。

Python解决UDP端口复用问题一直觉得UDP协议很简单,但是今天问题让我感觉到网络的基础真是博大精深。

废话少说,来看问题吧。由于协议的需要,我得实现一个UDP的客户端和服务器端,并且从同一个端口读写数据。

最初不以为然,无非就是用两个socket,一个监听并从这个端口读取数据(服务器端采用了twisted),另一个向这个端口写入数据,用python实现只要行左右的代码。

由于要向同一个端口写数据,于是client必须有bind,但是运行后发现server先bind了这个端口,client运行时会报错

一般这种错误时因为多个socket不能同时bind同一个地址 由于基础不够扎实,我开始疯狂的搜索,发现有人说端口复用的问题,所谓的端口复用,是指一个套接字释放掉一个端口后有一个wait_time,另一个套接字如果接着bind就会报错。虽然我的问题不完全一样,但是我欣喜若狂的使用了。即在client bind前加上如下一句

Python的Socket编程过程中实现UDP端口复用的实例分享(python socket用法)

但是仍然报错:

(顺便一提,还有另一个参数叫SO_REUSEPORT,即复用端口,另外有一个叫SO_EXCLUSIVEADDRUSE,即不准复用该端口,其他socket的参数还有很多,可以参考 这个错误让我百思不得其解,搜索一下,主要有两种解释,有人说是需要提升应用程序的权限为管理员,我用的是eclipse+pydev,提升完eclipse权限没用,实际上还要修改python.exe的权限,方法是在这个程序上右键,兼容性一栏中勾上以系统管理员身份运行;有人说是跟其他程序地址或者端口冲突。但是我测试过发现都不行。

另外,运行的时候发现,twisted的服务器端一定是要在主线程中,否则会报signal一定要在主线程才能接受的错误,但是twisted的reactor一运行起来就阻塞了。

在twisted文档中翻到,原来还有一种UDP叫做connected UDP,变态吧,所谓connected UDP,就是只能向一个地址收发数据,看起来貌似可以,但是不符合可以向多个地址接收数据。

最后在一篇文章中翻到说需要两个端口都设置重用,于是我试着重新写一个服务器,与之前的客户端配合,运行良好,完全无错

好吧,看来问题在调用twisted了,不知道他是否有这样的设置,进去将这部分代码翻了一下,找不到这样设置的参数。

难道说twisted就完全不提供这样的功能?最终在multicast中翻到这样一段,也就是,多播的情况是支持地址复用的,动手测起来。

将server端改成如下代码,运行通过!

感触良多,底层的知识比较重要,浮沙筑高台果然危险。

Python中列表、字典、元组数据结构的简单学习笔记 列表列表是Python中最具灵活性的有序集合对象类型。与字符串不同的是,列表可以包含任何类型的对象:数字、字符串甚至其他列表。列表是可变对象,

两个命令把 Vim 打造成 Python IDE的方法 运行下面两个命令,即可把Vim(含插件)配置成PythonIDE。目前支持MAC和Ubuntu。curl-

总结Python编程中函数的使用要点 为何使用函数最大化代码的重用和最小化代码冗余流程的分解编写函数def语句在Python中创建一个函数是通过def关键字进行的,def语句将创建一个函数对

标签: python socket用法

本文链接地址:https://www.jiuchutong.com/biancheng/384386.html 转载请保留说明!

上一篇:使用Python编写基于DHT协议的BT资源爬虫(python的基础代码)

下一篇:Python中列表、字典、元组数据结构的简单学习笔记(python列表组成字符串)

  • 购车发票需要认购吗
  • 灭火器属于什么经营范围
  • 个体工商户开普票流程
  • 企业收到利息发票怎么做分录
  • 社保的滞纳金算是社保里的吗
  • 普通合伙企业要交什么税
  • 同一控制下的企业合并的会计核算方法
  • 企业汇算清缴时允许税前扣除的工资是什么
  • 房产税收取标准有哪些
  • 捐赠支出税前扣除政策
  • 包装物押金会计分录怎么做
  • 公司委托财务去银行办理业务
  • 未认证发票先入账可以吗
  • 外购商品赠送给顾客
  • 出差补贴费
  • 资金流量表的解读
  • 税局代增值税专用发票 需要带什么
  • 小微企业所得税减免政策2023
  • 本年利润有期末余额吗
  • 异地项目预缴个人所得税
  • 小规模企业国税怎么报税
  • 法定代表人的个人债务会执行公司财产么
  • 开发企业土地使用税计算方法
  • 银行存款收款凭证属于什么凭证
  • win10怎么看已安装的驱动
  • 水星mw300re说明书
  • 企业所得税季度预缴纳税申报表
  • thinkphp import
  • 返还土地出让金如何追缴的
  • 工会经费是按应发工资还是实发工资申报
  • 深入理解php中的数字
  • jasperreports入门
  • vue全局组件和局部组件
  • springboot ci
  • 工会经费计提比例是2%还是0.8%
  • 其他发票是什么意思
  • 逾期包装物押金收入计入什么科目
  • 结算备付金管理办法(2019年修订版)
  • 以固定资产增资流程是怎样操作
  • 商场返点怎么核算
  • 财务f/p是什么意思的缩写
  • 视同销售到底如何纳税调整?
  • 营业执照筹建是做什么的
  • 增值税与消费税中关于包装物押金规定的异同点
  • 使用SqlServer CTE递归查询处理树、图和层次结构
  • puthon zip函数
  • 注册资本印花税最新政策2023年
  • 开具利息收入发票需不需要有经营范围
  • 个人捐赠支出税前扣除条件
  • 深入分析的成语
  • sqlserversa用户登录失败
  • 原材料发生退货怎么处理
  • 文化事业建设费的征收标准
  • 专门借款本金汇兑差额
  • 汽车报废补贴18000
  • 装载机如何计提折旧费用
  • 预计负债是暂时性差异还是永久性差异
  • 什么是内部报酬吗
  • 收到土地使用权计入什么科目
  • 公司提供给员工暂借款未还款离职
  • 顺风车没有发票是否合法
  • 账务处理有哪几种
  • 非房产企业出售土地,能否计算抵减地价款
  • 贷款利息天数怎么算的
  • 工程物资盘盈为什么冲减在建工程
  • 公账钱怎么取出
  • 私营企业固定资产法律制度
  • mysql数据库类型有哪些?如何选择合适的数据类型
  • windows2003服务
  • easybcd修复ubuntu
  • 全自怎么安装方法
  • xp怎么安全模式
  • win8读不出u盘
  • win7系统电脑蓝牙怎么开
  • glimp使用方法
  • 手机摇一摇插件
  • 安卓开发问题
  • 电子税务局如何申报社保
  • 地方税务局发票查询
  • 土地增值税分期清算条件?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设