使用udp发送一个可执行的jar文件
服务端:
'''
规定:
服务器接受客户端请求,得知要发送文件了(实际就得知该发送哪个)
向其发送文件,然后不停的发送(大文件分段发送),此处我还要接受客户端的接受成功消息
'''
import socket
BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
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()
客户端:
'''
规定:
客户端向服务端请求文件(音频或者视屏等完整性要求不高的)
先打个招呼,要文件了(实际可以为要哪个文件)
然后开始接受文件,不停的接受即可(这里我每接受一次就回复一句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;
client.sendto('ok'.encode('utf-8'),addr)
count+=1;
print('循环了'+str(count))
f.close()
client.close()