| 15 | parser.add_argument('--timeout', type=int) |
| 16 | |
| 17 | class MsgServer(object): |
| 18 | def __init__(self, server_ip, server_port): |
| 19 | self.init_chat() |
| 20 | self.send('server chat logged in!') |
| 21 | self.start_server(server_ip, server_port) |
| 22 | |
| 23 | def init_chat(self): |
| 24 | itchat.auto_login(enableCmdQR=2) |
| 25 | |
| 26 | def send(self, msg, echo=True): |
| 27 | if echo: |
| 28 | print(msg) |
| 29 | itchat.send(msg, toUserName='filehelper') |
| 30 | |
| 31 | def worker_thread(self, conn, addr): |
| 32 | conn.settimeout(args.timeout) |
| 33 | if conn is not None: |
| 34 | self.send('job connected! [{}]'.format(addr)) |
| 35 | else: |
| 36 | self.send('none connection!') |
| 37 | return -1 |
| 38 | |
| 39 | while(True): |
| 40 | try: |
| 41 | recv_data = conn.recv(1024) |
| 42 | except socket.timeout as e: |
| 43 | print('no msg...') |
| 44 | else: |
| 45 | msg_len = len(recv_data) |
| 46 | if msg_len == 0: |
| 47 | self.send('connection break, waiting for other connections..') |
| 48 | break |
| 49 | self.send(str(recv_data, encoding = 'utf-8')) |
| 50 | conn.close() |
| 51 | |
| 52 | def start_server(self, server_ip, server_port): |
| 53 | ip_port = (server_ip, server_port) |
| 54 | s = socket.socket() |
| 55 | s.bind(ip_port) |
| 56 | |
| 57 | # dump ip/port info to file |
| 58 | with open('server.txt', 'w') as f: |
| 59 | f.write('{} {}\n'.format(server_ip, server_port)) |
| 60 | |
| 61 | s.listen() |
| 62 | self.send('server listening on {}, waiting for job connection...'.format(server_ip)) |
| 63 | while(True): |
| 64 | conn, addr = s.accept() |
| 65 | threading.Thread(target=self.worker_thread, args=(conn, addr)).start() |
| 66 | |
| 67 | class MsgClient(object): |
| 68 | def __init__(self, server_ip, server_port): |