import socket import struct import json import os import PySimpleGUI as sg def recvdata(conn, filepath): header_size = struct.unpack('i', conn.recv(4))[0] header_bytes = conn.recv(header_size) header_json = header_bytes.decode('utf-8') header_dic = json.loads(header_json) content_len = header_dic['contentlen'] content_name = header_dic['contentname'] recv_len = 0 pdf = os.path.join(filepath, content_name) with open(pdf, 'wb') as file: while recv_len < content_len: correntrecv = conn.recv(1024 * 1000) file.write(correntrecv) recv_len += len(correntrecv) def senddata(conn, path, select_type): name = os.path.basename(os.path.realpath(path)) try: with open(path, 'rb') as file: content = file.read() headerdic = dict( contentlen=len(content), contentname=name, select_type=select_type ) headerjson = json.dumps(headerdic) headerbytes = headerjson.encode('utf-8') headersize = len(headerbytes) conn.send(struct.pack('i', headersize)) conn.send(headerbytes) conn.sendall(content) except ConnectionResetError: print('不存在这个文件!') def connect(): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) dest_ip = '192.168.11.121' dest_port = int(8191) client.connect((dest_ip, dest_port)) return client def transclient(sendfile, resfile, select_type): conn = connect() senddata(conn, sendfile, select_type) recvdata(conn, resfile) def make_gui(): while True: layout = [ [sg.Text('选择排样程序')], [sg.Radio('T7', 'layout', key='t7', default=True), sg.Radio('nova', 'layout', key='nova'), sg.Radio('Xplus', 'layout', key='xplus')], [ sg.Text('导入排样excel')], [ sg.Input(key='_FILE1_'), sg.FileBrowse()], [ sg.Text('生成排样位置')], [ sg.Input(key='_FILE2_'), sg.FolderBrowse()], [ sg.OK(), sg.Cancel()]] window = sg.Window('解码排样测试程序', layout) event, values = window.Read() if event == 'OK': if values['nova']: select_type = 'nova' elif values['xplus']: select_type = 'xplus' else: select_type = 't7' transclient(values['_FILE1_'], os.path.join(values['_FILE2_']), select_type) sg.Popup('排样成功!') else: window.Close() break if __name__ == '__main__': # respath = 'result' # transclient(os.path.join('example', '0520_T7_1.xlsx'), respath) make_gui()