socket 服务端发送数据大于客户端接收速度_python3实现UDP协议的简单服务器和客户端...

这篇博客介绍了如何使用Python3的socket模块实现UDP协议的简单服务器和客户端。在无连接的UDP协议下,服务器无需预先建立连接即可发送数据。由于UDP不提供错误恢复和数据重传,其安全性相对较低。示例代码展示了客户端和服务器的二进制数据收发过程。
摘要由CSDN通过智能技术生成

利用python中的socket模块来实现UDP协议,这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了。

UDP:用户数据报协议,是一个面向无连接的协议。采用该协议不需要两个应用程序先建立连接。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性差。

客户端

python3只能收发二进制数据,需要显示转码

from socket import *host = '192.168.0.112'  #   这是客户端的电脑的ipport = 13141 #  接口选择大于10000的,避免冲突bufsize = 1024 # 定义缓冲大小addr = (host,port) # 元组形式udpClient = socket(AF_INET,SOCK_DGRAM) #    创建客户端while True:    data = input('>>> ')    if not data:        break    data = data.encode(encoding='utf-8')    udpClient.sendto(data,addr) #   发送数据    result = udpClient.revcfrom(bufsize) # 接收数据和返回地址    print('客户端接收到的数据:',result)    data,addr = result    print(data.decode(encoding='utf-8'),'from',addr)udpClient.close()

服务器

同样需要显示转码

from socket import *from time import ctimehost = '' # 监听所有的ipport = 13141 # 端口必须 一致bufsize = 1024addr = (host,port)udpServer = socket(AF_INET,SOCK_DGRAM)udpServer.bind(addr)    #   开始监听while True:    print('Waiting for connection...')     data,addr = udpServer.revcfrom(bufsize) #   接收数据和返回地址    #   处理数据    data = data.decode(encoding='utf-8').upper()    print('data = ',data)    data = "at %s :%s" % (ctime(),data)    print('data1 = ',data)    #   发送数据    udpServer.sendto(data.encode(encoding='utf-8'),addr)    print('...recevied from and return to :',addr)udpServer.close()

结果如下:

客户端

from socket import *host = '192.168.0.112'  #   这是客户端的电脑的ipport = 13141 #  接口选择大于10000的,避免冲突bufsize = 1024 # 定义缓冲大小addr = (host,port) # 元组形式udpClient = socket(AF_INET,SOCK_DGRAM) #    创建客户端while True:    data = input('>>> ')    if not data:        break    data = data.encode(encoding='utf-8')    udpClient.sendto(data,addr) #   发送数据    result = udpClient.recvfrom(bufsize) # 接收数据和返回地址    print('客户端接收到的数据:',result)    data,addr = result    print(data.decode(encoding='utf-8'),'from',addr)udpClient.close()

服务端

from socket import *from time import ctimehost = '' # 监听所有的ipport = 13141 # 端口必须 一致bufsize = 1024addr = (host,port)udpServer = socket(AF_INET,SOCK_DGRAM)udpServer.bind(addr)    #   开始监听while True:    print('Waiting for connection...')     data,addr = udpServer.recvfrom(bufsize) #   接收数据和返回地址    #   处理数据    data = data.decode(encoding='utf-8').upper()    print('data = ',data)    data = "at %s :%s" % (ctime(),data)    print('data1 = ',data)    #   发送数据    udpServer.sendto(data.encode(encoding='utf-8'),addr)    print('...recevied from and return to :',addr)udpServer.close()

结果如下:

5d4223a228ba753f29546bf94f566ab2.png

011822a158bbac398acc4c22ac7a64d3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值