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 04 Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
MySQL最常见的操作语句小结
May 07 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
Python开发网站目录扫描器的实现
Feb 21 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
在python中画正态分布图像的实例
Jul 08 Python
Python关于反射的实例代码分享
Feb 20 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
Apr 06 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
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
PHP strtotime函数详解
2009/12/18 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
javascript Keycode对照表
2009/10/24 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
python处理excel绘制雷达图
2019/10/18 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
毕业生找工作推荐信
2013/11/21 职场文书
安全教育培训心得体会
2016/01/15 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL