Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】


Posted in Python onOctober 11, 2019

本文实例讲述了Python 网络编程之UDP发送接收数据功能。分享给大家供大家参考,具体如下:

demo.py(UDP发送数据):

import socket # 导入socket模块
def main():
  # 创建一个udp套接字
  udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  # 绑定本机ip和端口号 (发送数据时,如果不绑定,系统会随机分配端口号。接收数据时,一般需要手动绑定ip和端口)
  udp_socket.bind(("", 7890)) # 空字符串""表示本地ip
  # 从键盘获取数据
  send_data = input("请输入要发送的数据:")
  # 可以使用套接字接收和发送数据
  # udp_socket.sendto(b"hahahah", ("192.168.33.53", 7788)) # 字符串前的b表示bytes字节类型
  udp_socket.sendto(send_data.encode("utf-8"), ("192.168.33.53", 7788)) # encode将字符串转成bytes类型
  # 关闭套接字
  udp_socket.close()
if __name__ == "__main__":
  main()

demo.py(UDP接收数据):

import socket
def main():
  # 1. 创建套接字
  udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  # 2. 绑定本机ip和端口
  udp_socket.bind(("", 7788)) # 绑定本机的ip和端口(元组类型) ""表示本机ip
  # 3. 用套接字接收数据
  recv_data = udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数。会阻塞代码,直到接收到数据
  # recv_data这个变量中存储的是一个元组 (接收到的数据,(发送方的ip, port))
  recv_msg = recv_data[0] # 字节类型 存储接收到的数据
  send_addr = recv_data[1] # 元组 存储发送方的地址和端口信息
  # 4. 打印接收到的数据
  # print(recv_data) # 元组 (接收到的数据,(发送方的ip, port))
  print("%s:%s" % (str(send_addr), recv_msg.decode("gbk"))) # decode将字节转成字符串
  # 5. 关闭套接字
  udp_socket.close()
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
跟老齐学Python之有点简约的元组
Sep 24 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
pandas计数 value_counts()的使用
Jun 24 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
python实现井字棋小游戏
Mar 04 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
Python 如何查找特定类型文件
Aug 17 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 #Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 #Python
Python中的延迟绑定原理详解
Oct 11 #Python
python pycharm的安装及其使用
Oct 11 #Python
详解Python3迁移接口变化采坑记
Oct 11 #Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 #Python
Pycharm 2019 破解激活方法图文详解
Oct 11 #Python
You might like
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP ajax 分页类代码
2008/11/13 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python之用户输入的实例
2018/06/22 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python类反射机制使用实例解析
2019/12/30 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
pyspark 随机森林的实现
2020/04/24 Python
python 5个顶级异步框架推荐
2020/09/09 Python
Python3获取cookie常用三种方案
2020/10/05 Python
自主招生自荐信
2013/12/08 职场文书
政府采购方案
2014/06/12 职场文书
三严三实对照检查材料
2014/08/25 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python