python实现一个简单的udp通信的示例代码
作者:magic_xiang 发布时间:2023-07-23 16:08:43
标签:python,udp,通信
什么是 Socket?
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
python创建套接字
socket.socket([family[, type[, proto]]])
参数解析:
family: AF_UNIX(适用跨机通信) 或 AF_INET(IPv4)(适用本机通信)
type: 套接字类型,可以根据是面向连接的还是非连接分为 SOCK_STREAM(TCP) 或 SOCK_DGRAM(UDP)
protocol: 一般不填默认为0.
客户端代码:udp_client.py
第一步:导入socket模块和创建套接字
import socket
u_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
第二步:开始通信
# s.getsockname() 返回套接字自己的地址。
print("%s:%s 开始工作" %u_client.getsockname())
while True:
# 发送数据
data = input("input>>>")
u_client.sendto(data.encode('utf-8'), ("localhost", 8887))
# 退出系统操作
if data == 'exit':
break
# 接收数据
data, addr = u_client.recvfrom(1024)
print("客户端接收信息的来源: %s:%s" %addr)
print("客户端接收信息的数据: %s" %data.decode('utf-8'))
第三步:关闭套接字
u_client.close()
服务端代码:udp_server.py
第一步:导入socket模块和创建套接字
import socket
u_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
第二步:开始通信
# 绑定端口
u_server.bind(('localhost', 8887))
print("%s:%s 开始工作" %u_server.getsockname())
while True:
# 接收数据
# u_server.recvfrom() 接收UDP数据,返回值是(data,address)
data, addr = u_server.recvfrom(1024)
print("接收信息的来源: %s:%s" %addr)
print("接收信息的数据: %s" %data.decode('utf-8'))
# 发送原地址数据
send_data = ("接收到数据:"+data.decode('utf-8')+" --Thanks").encode('utf-8')
u_server.sendto(send_data, addr)
# 退出系统操作
if(data.decode('utf-8') == 'exit'):
break
第三步:关闭套接字
u_server.close()
测试结果
新建两个cmd窗口,分为执行客户端和服务端的代码
来源:https://segmentfault.com/a/1190000018086535


猜你喜欢
- 前言: 收到疯狂的慢查询及请求超时报警,通过metrics分析出来自mysql请求的异常,c
- 今天遇到一个问题,要保证页面渲染前请求的数据已经得到了由于user是在异步请求之后保存在session中,而在页面渲染时session中还没
- import requestsimport reimport jsonimport ossession = requests.session
- 查看字符编码:import chardetresponse = chardet.detect(b'\xe5\xbd\x93\xe5\
- 在python中,用于数组拼接的主要来自numpy包,当然pandas包也可以完成。而,numpy中可以使用append和concatena
- 1 输出大写字母、小写字母、大小写字母、数字、大小写字母和数字1.1输出小写:找到小写a(97)到z(122)的的ASCII码,然后转义为字
- 1、修改MD5算法重的4个常数,这是最捷径的作法,其特点是加密后的数据和加密前非常类似,但是不会被破解 2、多次加密,对MD5加密过的数据进
- prop与$emit的用法1.vue组件Prop传递数据 组件实例的作用域是孤立的,这意味着不能在子组件的模板内直接引父组件的数据
- Tensorflow 提供了一种统一的格式来存储数据,这个格式就是TFRecord,上一篇文章中所提到的方法当数据的来源更复杂,每个样例中的
- PyQt5简介1.什么是GUI:Graphical User Interface,图形用户界面,用于人机交互。2.怎么设计GUI:Qt3.什
- GeoPandas是一个基于pandas,针对地理数据做了特别支持的第三方模块。它继承pandas.Series和pandas.Datafr
- 前言这几天看《流畅的python》这本书了,在一个示例中又看到了property作为装饰器在使用,因为很久没有用这个东西了,对它
- --建递增序列CREATE SEQUENCE LZEAM_SP_LOOP_EQ_SEQ MINVALUE 1 INCREMENT BY 1
- 表示文字链接最清楚的方式是“蓝色文字+下划线”,这是在浏览器发展过程中形成的。这个问题大家都说过很多次了,我也曾经说过。然而,这样的规范却总
- 安装python之后,我们往往面临这样一个问题,在命令行输入“python”,竟然出错,难道是没有安装成功吗?非也,其实是你的系统环境变量没
- 如下所示:#待处理列表A= [1,2,3,4,5]#移动次数a = 3右移比较简单for i in range(a): A.insert(0
- 一、界面介绍文件导航区域 能够 浏览/定位/打开 项目文件文件编辑区域 能够 编辑 当前打开的文件控制台区域 能够:输出程序执行内容跟踪调试
- 我们之前看到了函数和对象。从本质上来说,它们都是为了更好的组织已经有的程序,以方便重复利用。模块(module)也是为了同样的目的。在Pyt
- 我和朋友都建了一个电子商务网站,大量的访问,频繁地建立和中断数据库连接,导致Web 数据库应用程序降低了数据库服务器的性能。但最近,朋友使用
- 本文实例讲述了Python实现的knn算法。分享给大家供大家参考,具体如下:代码参考机器学习实战那本书:机器学习实战 (Peter Harr