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控制台显示时钟的示例
Feb 24 Python
Python常用的日期时间处理方法示例
Feb 08 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
详解Python发送email的三种方式
Oct 18 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
Python多线程获取返回值代码实例
Feb 17 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
Python常用数字处理基本操作汇总
Sep 10 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 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自动适应范围的分页代码
2008/08/05 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
JS比较2个日期间隔的示例代码
2014/04/15 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
python实现ip代理池功能示例
2019/07/05 Python
Python实现时间序列可视化的方法
2019/08/06 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
聊聊python中的循环遍历
2020/09/07 Python
应用电子技术专业个人求职信
2013/09/21 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
事业单位接收函
2014/01/10 职场文书
啦啦队口号大全
2014/06/16 职场文书
golang 语言中错误处理机制
2021/08/30 Golang