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 21 Python
pyqt4教程之messagebox使用示例分享
Mar 07 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
基于python+selenium的二次封装的实现
Jan 06 Python
python opencv 检测移动物体并截图保存实例
Mar 10 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python正则简单实例分析
2017/03/21 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
python中封包建立过程实例
2021/02/18 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
2014端午节活动策划方案
2014/01/27 职场文书
春节晚会主持词
2014/03/24 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
永远是春天观后感
2015/06/12 职场文书
婚育证明格式
2015/06/17 职场文书
python urllib库的使用详解
2021/04/13 Python
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电
Golang解析JSON对象
2022/04/30 Golang
python基础之//、/与%的区别详解
2022/06/10 Python