Files
2017-04-24 20:40:11 +08:00

41 lines
1.3 KiB
Python

import socket
import os
import struct
import traceback
FILENAME_LENGTH = struct.calcsize(b'128s')
FILE_INFO_LENGTH = struct.calcsize(b'128sq32s') # 文件名, 文件大小, MD5
if __name__ == '__main__':
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
server.connect(('alphamj.cn', 9999))
print('connected to server')
cmdPack = struct.pack(b'128s', 'gp_G1003.xml'.encode())
server.send(cmdPack)
recv = server.recv(FILE_INFO_LENGTH)
fname, fsize, md5 = struct.unpack(b'128sq32s', recv)
fname = fname.decode()
fize = int(fsize)
if fsize == 0:
print('Server returns error, No such a file %s ' % fname)
else :
recvSize = 0
f = open(fname.split("xml")[0]+"xml", "wb")
while (recvSize < fsize):
if (fsize - recvSize > 1024):
fileData = server.recv(1024)
recvSize += 1024
else :
fileData = server.recv(fsize - recvSize)
recvSize = fsize
f.write(fileData)
f.close()
print('File receive success')
except Exception:
print('Oops, something goes wrong.')
traceback.print_exc()
cmdPack = struct.pack(b'128s', 'exit'.encode())
server.send(cmdPack)