udpsocket使用编程(socket通信原理)

   发布日期:2025-08-23 06:12:43     手机:https://m.qqhuangye.com/wenda/tag/7722.html     违规举报

udpsocket使用编程(socket通信原理)

前言

前文使用TCP面向流的套接字,今天讲解的UDP的工作方式与TCP/IP不同。UDP是用户数据报协议,是一个面向消息的协议。

一方面,UDP不需要一个长期活动连接,所以建立UDP套接字稍微简单一些。另一方面,UDP消息必须放在一个数据报中。

在IPv4中,数据报包含65507个字节,这些字节信息中还包括首部信息。因为UDP不需要长期的连接,所以它无法得到TCP所能提供的传输保障。

服务器代码

因为UDP并没有连接,所以服务器不需要监听和接收连接。它只需要使用bing()将其套接字与一个端口关联,然后等待各个消息。

示例代码如下:

import socket# 1.创建一个套接字,sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)sock.bind((\'localhost\', 10000))while True: data, address = sock.recvfrom(4096) print(data.decode(\'UTF-8\'), address) if data: sent = sock.sendto(\'已接收到你发来的消息\'.encode(\'UTF-8\'), address)

其中,recvfrom()表示从套接字读取消息,比如客户但发送消息后,消息与客户但地址都在里面。

至于sendto()很好理解,就是发送消息给别人。参数1表示消息内容,参数2就是发送到哪里(也就是对方的地址)。

客户端代码

客户端当然比服务器更简单,因为UDP不需要连接,可以直接将消息发送到服务器,并使用recvfrom()响应。示例如下:

import socketsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try: msg = "发送消息到服务器".encode(\'utf-8\') sent = sock.sendto(msg, (\'localhost\', 10000)) data, server = sock.recvfrom(4096) print(data.decode())finally: sock.close()

同样的,这里sock.recvfrom()用于接收服务器反馈的消息内容与地址。运行之后,效果如下所示:

 
 
本文地址:https://www.qqhuangye.com/wenda/tag/7722.html,转载请注明出处。"error":400,"message":"over quota","url:"https://www.qqhuangye.com/wenda/tag/7722.html
 
更多>同类问答

推荐图文
推荐问答
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-2  |  SiteMaps  |  BaiDuNews
Processed in 0.213 second(s), 8 queries, Memory 0.52 M