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

来源:互联网 发布:天擎网络 编辑:程序博客网 时间:2024/05/21 06:38

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

服务端:

#!python#文件名: demo_server.py'''    规定:    服务器接受客户端请求,得知要发送文件了(实际就得知该发送哪个)    向其发送文件,然后不停的发送(大文件分段发送),此处我还要接受客户端的接受成功消息'''import socketBUF_SIZE = 1024server_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=0flag=1f=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+=1print('循环了'+str(count))server.close()

客户端:

#!python#文件名: demo_client.py'''     规定:     客户端向服务端请求文件(音频或者视屏等完整性要求不高的)     先打个招呼,要文件了(实际可以为要哪个文件)     然后开始接受文件,不停的接受即可(这里我每接受一次就回复一句ok))'''import socketimport structBUF_SIZE = 1024server_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()
0 0