Python udp编程_python socket udp

Python udp编程_python socket udpTCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。我们来看看如何通过UDP协议传输数据。和TCP类似,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。

虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。

我们来看看如何通过UDP协议传输数据。和TCP类似,使用UDP的通信双方也分为客户端和服务器。服务器首先需要绑定端口:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口:
s.bind(('127.0.0.1', 9999))

创建Socket时,SOCK_DGRAM指定了这个Socket的类型是UDP。绑定端口和TCP一样,但是不需要调用listen()方法,而是直接接收来自任何客户端的数据:

print 'Bind UDP on 9999...'
while True:
    # 接收数据:
    data, addr = s.recvfrom(1024)
    print 'Received from %s:%s.' % addr
    s.sendto('Hello, %s!' % data, addr)

recvfrom()方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用sendto()就可以把数据用UDP发给客户端。

注意这里省掉了多线程,因为这个例子很简单。

客户端使用UDP时,首先仍然创建基于UDP的Socket,然后,不需要调用connect(),直接通过sendto()给服务器发数据:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for data in ['Michael', 'Tracy', 'Sarah']:
    # 发送数据:
    s.sendto(data, ('127.0.0.1', 9999))
    # 接收数据:
    print s.recv(1024)
s.close()

从服务器接收数据仍然调用recv()方法。

仍然用两个命令行分别启动服务器和客户端测试,结果如下:

client-server

小结

UDP的使用与TCP类似,但是不需要建立连接。此外,服务器绑定UDP端口和TCP端口互不冲突,也就是说,UDP的9999端口与TCP的9999端口可以各自绑定。

源码参考:https://github.com/michaelliao/learn-python/tree/master/socket

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196142.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月2日 下午7:43
下一篇 2025年10月2日 下午8:15


相关推荐

  • 配置iptables

    配置iptables

    2021年5月12日
    130
  • http错误状态码_HTTP常用的14种状态码

    http错误状态码_HTTP常用的14种状态码一些常见的状态码为:200-服务器成功返回网页404-请求的网页不存在503-服务不可用详细分解:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码说明100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。…

    2026年4月17日
    5
  • 【STM32H7的DSP教程】第29章 STM32H7移植汇编定点FFT库(64点,256点和1024点)[通俗易懂]

    【STM32H7的DSP教程】第29章 STM32H7移植汇编定点FFT库(64点,256点和1024点)[通俗易懂]完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547第29章STM32H7移植汇编定点FFT库(64点,256点和1024点)本章主要讲解ST官方汇编FFT库的应用,包括1024点,256点和64点FFT的实现。29.1汇编FFT库说明29.2函数cr4_fft_1024_stm32的使用(含幅频和相频响应)29.3函数cr4_fft_256_stm32的使用29.4函数cr4…

    2025年9月26日
    4
  • 小米9开发版自带root吗_小米9root权限获取教程

    小米9开发版自带root吗_小米9root权限获取教程小米手机 9 搭载了骁龙 855 处理器 拥有高端的性能 是玩机爱好者必选的一个手机作品 那么如何获得最高 root 权限呢 下面来看看小编为大家带来的分享 Tips 小米手机开发版系统可以解锁 ROOT 权限 如果不知道如何将稳定版刷成开发版可以在小米社区 APP 中找到相关教程 1 第一步 进入手机系统设置页面 再设置页面的最上方可以看到一个输入框 点击 搜索系统设置项 输入 root 即可得到 授权管理 搜索结

    2026年3月18日
    3
  • onLoad和onShow的使用

    onLoad和onShow的使用onLoad页面第一次加载时执行,只执行一次,一般用于上一级点击进入下一级,需要传参数时使用。onShow除了页面第一次加载时会执行,页面有什么小程序API操作行为也会触发执行。onLoad:function(options){//页面初始化options为页面跳转所带来的参数},onShow:function(){…

    2022年6月19日
    152
  • jmeter测试服务器性能测试报告,Jmeter的性能测试

    jmeter测试服务器性能测试报告,Jmeter的性能测试需要分析的系统信息需要分析的业务信息性能需求评估确定性能测试点:关键业务:确定被测项目是否属于关键业务,有哪些主要的业务逻辑点,特别是跟交易相关的功能点。例如转账,扣款等接口。如果项目(或功能点)不属于关键业务(或关键业务点)日请求量:确定被测项目各功能点的日请求量(可以统计不同时间粒度下的请求量如:小时,日,周,月)。如果日请求量很高,系统压力很大,而且又是关键业务,该项目需要做性能测试,而且关…

    2022年6月20日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号