[代码笔记] python 之网络编程: 使用udp 发送音频文件

本文介绍了一种使用UDP协议进行大文件(如JAR文件)传输的方法,并提供了服务器端和客户端的Python实现代码。通过分段传输和确认机制确保文件能够完整地从服务器传送到客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用udp发送一个可执行的jar文件

服务端:

#!python
#文件名: demo_server.py
'''
    规定:
    服务器接受客户端请求,得知要发送文件了(实际就得知该发送哪个)
    向其发送文件,然后不停的发送(大文件分段发送),此处我还要接受客户端的接受成功消息
'''


import socket

BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)

#socket的类型是socket.SOCK_DGRAM(udp使用的)
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#服务端照例绑定地址
server.bind(server_addr)

#循环接受客户端发送数据,并将数据发回

count=0
flag=1
f=open('tank.jar','rb')
while True:
    if count==0:
        print ("Are You Ready?")
        data,client_addr = server.recvfrom(BUF_SIZE)
        print ('来自',client_addr,' 的数据是: ',data.decode('utf-8'))

    data=f.read(BUF_SIZE)
    if str(data)!="b''":
        server.sendto(data,client_addr)
        print(data)#此处打印注意被刷屏,仅测试用
    else:
        server.sendto('end'.encode('utf-8'),client_addr)#此处为文件结束,发送结束通知给客户端
        break

    data,client_addr = server.recvfrom(BUF_SIZE)
    print ('接受自 ',client_addr,' 收到数据为 : ',data.decode('utf-8'))
    count+=1
print('循环了'+str(count))
server.close()

客户端:

#!python
#文件名: demo_client.py

'''
     规定:
     客户端向服务端请求文件(音频或者视屏等完整性要求不高的)
     先打个招呼,要文件了(实际可以为要哪个文件)
     然后开始接受文件,不停的接受即可(这里我每接受一次就回复一句ok))
'''

import socket
import struct

BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

count=0;
#不停的发送数据 ,没发一次尝试接受一次数据并打印
f=open('tmp/file_copy.jar','wb')
while True:
     if count==0:
          data='Yes,I\'m Ready'
          client.sendto(data.encode('utf-8'),server_addr)
     data,addr = client.recvfrom(BUF_SIZE)
     if str(data)!="b'end'":
          f.write(data)
          print(data)#此处打印注意被刷屏,仅测试用
     else:
          break;#接受到结束通知,结束循环,打印循环次数,然后去指定路径查找file_copy.jar尝试运行
     client.sendto('ok'.encode('utf-8'),addr)#向服务端发送成功通知
     count+=1;

print('循环了'+str(count))
f.close()
client.close()
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值