python使用UDP实现客户端和服务器对话
作者:Dante丶 时间:2023-03-24 17:59:27
UDP 客户端
一个使用UDP协议的客户端示例代码,用于实现连续对话。请注意,UDP是无连接协议,因此在实现连续对话时需要特别小心。
以下是示例代码:
import socket
# 客户端配置
HOST = 'localhost'
PORT = 12345
# 创建UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
# 获取用户输入
message = input("请输入要发送的消息:")
# 发送消息到服务器
client_socket.sendto(message.encode("utf-8"), (HOST, PORT)) # 注意,在不同操作系统上编码可能不同
# 接收服务器传回的消息
data, server_address = client_socket.recvfrom(1024)
print(f"收到来自{server_address}的消息:{data.decode('utf-8')}")
# 关闭套接字
client_socket.close()
在这个示例中,我们创建了一个UDP套接字,并利用sendto()
和recvfrom()
函数来发送和接收数据。该程序通过用户输入不断发送消息,然后等待服务器响应并显示其结果。请注意,由于UDP是无连接协议,因此无法保证消息的可靠性和顺序性。在实际开发过程中,您可能需要考虑这些因素并编写更加健壮的代码。
UDP 服务端
以下是一个使用UDP协议的服务端示例代码,用于实现连续对话:
import socket
# 服务器配置
HOST = 'localhost'
PORT = 12345
# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定到地址和端口
server_socket.bind((HOST, PORT))
while True:
# 接收客户端传来的消息
data, client_address = server_socket.recvfrom(1024)
print(f"来自{client_address}的消息:{data.decode('utf-8')}")
# 获取用户输入
message = input("请输入要发送的消息:")
# 发送消息到客户端
server_socket.sendto(message.encode("utf-8"), client_address)
# 关闭套接字
server_socket.close()
在这个示例中,我们创建了一个UDP套接字,并将其绑定到指定的地址和端口。然后,我们通过recvfrom()
函数接收来自客户端的消息,并通过sendto()
函数将响应发送回客户端。该程序通过循环不断接收和发送数据,从而实现了连续的对话功能。
请注意,由于UDP是无连接协议,因此无法保证消息的可靠性和顺序性。在实际开发过程中,您可能需要考虑这些因素并编写更加健壮的代码。
注意事项
1.运行代码的时候,必须先启动服务端代码;
2.注意解码和编码的地方,在不同的操作系统上,编码方式可能导致收到异常消息(Mac:utf-8
Windows:gbk
);
来源:https://juejin.cn/post/7213203008963788856
标签:python,UDP,对话,客户端,服务器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
numpy之sum()的使用及说明
2023-12-12 00:31:16
![](https://img.aspxhome.com/file/2023/0/79620_0s.png)
Python技巧之四种多线程应用分享
2021-12-04 12:11:57
Python脚本完成post接口测试的实例
2022-01-01 15:40:22
![](https://img.aspxhome.com/file/2023/2/112582_0s.jpg)
Mysql 增加主键或者修改主键的sql语句操作
2024-01-20 00:22:02
asp dictionary对象使用介绍
2008-05-30 13:51:00
Vue使用Element-UI生成并展示表头序号的方法
2024-06-05 10:04:27
![](https://img.aspxhome.com/file/2023/0/122000_0s.jpg)
解决django框架model中外键不落实到数据库问题
2024-01-13 20:36:12
![](https://img.aspxhome.com/file/2023/3/99123_0s.jpg)
Apache+php+mysql在windows下的安装与配置(图文)第1/2页
2024-05-11 09:25:34
![](https://img.aspxhome.com/file/2023/0/126210_0s.gif)
python地震数据可视化详解
2021-05-14 15:41:52
![](https://img.aspxhome.com/file/2023/2/100762_0s.jpg)
go语言K8S 的 informer机制浅析
2024-05-13 10:44:51
![](https://img.aspxhome.com/file/2023/1/125081_0s.jpg)
Python 中判断列表是否为空的方法
2023-10-25 13:19:12
php的对象传值与引用传值代码实例讲解
2023-11-06 08:42:37
![](https://img.aspxhome.com/file/2023/4/55714_0s.jpg)
Go channel实现原理分析
2024-05-05 09:30:29
![](https://img.aspxhome.com/file/2023/2/128652_0s.png)
使用MyISAM表和InnoDB的一些记录
2009-12-20 18:21:00
python多线程并发实例及其优化
2021-04-03 12:28:11
C# Oracle数据库操作类实例详解
2024-01-19 07:21:29
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2023-04-23 03:05:11
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2024-05-11 09:33:27
SQL Server数据库重命名、数据导出的方法说明
2024-01-22 05:51:45
分析Silverlight Button控件布局
2009-02-17 13:13:00