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内置的字符串处理函数整理
Jan 29 Python
常用python数据类型转换函数总结
Mar 11 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
python 删除非空文件夹的实例
Apr 26 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
详解python程序中的多任务
Sep 16 Python
Python类class参数self原理解析
Nov 19 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 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中实现获取随机数组列表的自定义函数
2015/04/02 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
JS打印组合功能
2016/08/04 Javascript
简单学习vue指令directive
2016/11/03 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python运行其他程序的实现方法
2017/07/14 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
挑战杯创业计划书的写作指南
2014/01/07 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
公安机关起诉意见书
2015/05/20 职场文书
给朋友的赠语
2015/06/23 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书