python网络编程:UDP方式传输数据
UDP --- 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
开发环境:linux下pycharm3.5
测试:使用terminal终端测试
使用 nc -u ip 端口 进行测试客户端
使用 nc -lu ip 端口 进行测试服务器端
1.udp服务器端接受一次数据
import socket
# 设置服务器默认端口号
PORT = 9002
# 创建一个套接字socket对象,用于进行通讯
# socket.AF_INET 指明使用INET地址集,进行网间通讯
# socket.SOCK_DGRAM 指明使用数据协议,即使用传输层的udp协议
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("", PORT)
# 为服务器绑定一个固定的地址,ip和端口
server_socket.bind(address)
# 接收客户端传来的数据 recvfrom接收客户端的数据,默认是阻塞的,直到有客户端传来数据
# recvfrom 参数的意义,表示最大能接收多少数据,单位是字节
# recvfrom返回值说明
# receive_data表示接受到的传来的数据,是bytes类型, receive_data.decode()解码,将bytes类型转换为字符串类型
# client_address 表示传来数据的客户端的身份信息,客户端的ip和端口,元组
receive_data, client = server_socket.recvfrom(1024)
print("来自客户端%s,发送的%s" % (client, receive_data.decode()))
# 不再接收数据的时候,将套接字socket关闭
server_socket.close()
测试:
2.udp服务端循环多次接受数据
import socket
PORT = 9002
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("192.168.219.129", PORT)
server_socket.bind(address)
while True:
receive_data, client_address = server_socket.recvfrom(1024)
print("接收到了客户端 %s 传来的数据: %s" % (client_address, receive_data.decode()))
PS:遇到问题没人解答?需要Python学习资料?可以加点击下方链接自行获取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
3.udp客户端接受一次数据
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
msg = input("请输入要发送的内容:") # 字符串类型, 通过msg.encode() 编码 转换为bytes类型
server_address = ("127.0.0.1", 8000) # 接收方 服务器的ip地址和端口号
client_socket.sendto(msg.encode(), server_address)
client_socket.close()
4.udp客户端循环多次接受数据
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
msg = input("请输入要发送的内容:")
server_address = ("192.168.79.127", 8000)
client_socket.sendto(msg.encode(), server_address)
5.udp服务器端循环多次接受发送数据
import socket
PORT = 8000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("", PORT)
server_socket.bind(address)
while True:
receive_data, client_address = server_socket.recvfrom(1024)
print("接收到了客户端d %s 传来的数据: %s" % (client_address, receive_data.decode()))
server_socket.sendto(receive_data, client_address)
6.udp客户端循环多次接受发送数据
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
msg = input("请输入要发送的内容:")
server_address = ("", 8000)
client_socket.sendto(msg.encode(), server_address)
receive_data, sender_address = client_socket.recvfrom(1024)
print("接受到了发送方 %s 传来的数据: %s" % (sender_address, receive_data.decode()))
python网络编程:UDP方式传输数据的更多相关文章
- python网络编程-udp
目录 1. 创建socket 2. udp网络程序-发送数据 3. udp网络程序-接收数据 4. python3中的编码转换 5. udp端口绑定 1. 创建socket 在 Python 中 使用 ...
- Python网络编程UDP服务器与客服端简单例子
[转载] https://blog.csdn.net/hu330459076/article/details/7868028 UDP服务器代码: #!/usr/bin/env python # -*- ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
- python网络编程,通过服务名称和会话类型(tcp,udp)获取端口号,简单的异常处理
作为一个php程序员,同时有对网络方面感兴趣,php就比较蛋疼了,所以就抽了些时间看python 之前学python基础因为工作原因,断断续续的看了个基础,差不多是可以写代码了 最近在看<pyt ...
- 图解Python网络编程
返回目录 本篇索引 (1)基本原理 (2)socket模块 (3)select模块 (4)asyncore模块 (5)asynchat模块 (6)socketserver模块 (1)基本原理 本篇指的 ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- Socket网络编程-UDP编程
Socket网络编程-UDP编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.UDP编程概述 1>.UDP服务端编程流程 创建socket对象.socket.SOCK_ ...
随机推荐
- GItBook命令使用(持续更新)
GitBook基本命令 gitbook init //初始化目录文件 gitbook help //列出gitbook所有的命令 gitbook --help //输出gitbook-cli的帮助信息 ...
- Vue-Router中History模式【华为云分享】
[摘要] vue-router的history模式的服务端支持 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...
- VLAN应用实例
VLAN 此次内容主要介绍VLAN的Access接口.Trunk接口.Hybird接口的配置实例,以及实际应用. 一.介绍三种接口 1.Access接口 (1)Access接口是交换机上用来连接用户主 ...
- 求亿级记录中搜索次数Top N的搜索词(MapReduce实现)
程序事例: 日志信息: 二手车 1345 二手房 3416 洗衣机 2789 输入: N=2 输出: 二手房 洗衣机 map函数如下: import java.io.IOException; impo ...
- centos使用yum存储快速安装MySQL
RHEL/CentOS 7.x MySQL yum库 https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm RHEL ...
- HDU5394 Bomb
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5934 There are NN bombs needing exploding. Each bomb ha ...
- Vue - 简单实现一个命令式弹窗组件
前言 在日常工作中弹窗组件是很常用的组件,但用得多还是别人的,空闲时间就自己来简单实现一个弹窗组件 涉及知识点:extend.$mount.$el 使用方式: this.$Confirm({ titl ...
- base64编码的字符串与图片相互转换
#region 图片转为base64编码的字符串---ImgToBase64String /// <summary> /// 图片转为base64编码的字符串 /// </summa ...
- 记录一次VMware与xshell远程链接的总结
VMware 与xshell链接 说在前面 用了一年多的virtualbox,虚拟机环境的配置算是理清了,可最近参加红帽培训,大家用的都是VMware,想想我也试试吧,刚好再熟悉一下,于是就捣鼓了很久 ...
- JS内置对象-Array之indexOf和lastIndexOf
indexOf() var num = [1, 7, 2, 3, 4, 7, 9] var pos = num.indexOf(7) var pos1 = num.indexOf(7, 2) cons ...