From 61c9bb594d1b3ca454dd4748fe3444cf7e33631c Mon Sep 17 00:00:00 2001 From: lukesau Date: Wed, 12 Apr 2023 16:02:44 -0700 Subject: [PATCH] does it work --- clientgui.py | 22 +++++++++++++++------- vckoserver.py | 27 ++++++++++++++++----------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/clientgui.py b/clientgui.py index 84075ae..2152d85 100755 --- a/clientgui.py +++ b/clientgui.py @@ -14,24 +14,32 @@ class MyFrame(wx.Frame): panel.SetSizer(my_sizer) self.host = "lukesau.com" self.port = 5000 # socket server port number + self.header_size = 1024 + self.format = "utf-8" + self.disconnect_message = "!DISCONNECT" self.Show() - + self.client_socket = socket.socket() + self.client_socket.connect((self.host, self.port)) # connect to the server def on_press(self, event): message = self.text_ctrl.GetValue() if not message: print("You didn't enter anything!") else: - client_socket = socket.socket() # instantiate - client_socket.connect((self.host, self.port)) # connect to the server - client_socket.send(message.encode()) # send message - data = client_socket.recv(1024).decode() # receive response - print('Received from server: ' + data) # show in terminal + self.send(message) self.text_ctrl.SetValue("") - client_socket.close() def sync_with_server(self): client_socket = socket.socket() # instantiate client_socket.connect((self.host, self.port)) # connect to the server + def send(self, msg): + message = msg.encode(self.format) + msg_length = len(message) + print(msg_length) + send_length = str(msg_length).encode(self.format) + send_length += b' ' * (self.header_size - len(send_length)) + self.client_socket.send(send_length) + self.client_socket.send(message) + print("done sending") diff --git a/vckoserver.py b/vckoserver.py index dfb03f4..4066cd4 100755 --- a/vckoserver.py +++ b/vckoserver.py @@ -7,27 +7,32 @@ class ServerVCKO: self.host = socket.gethostname() self.port = 5000 self.server_socket = socket.socket() - self.server_socket.bind((host, port)) + self.server_socket.bind((self.host, self.port)) self.header_size = 1024 self.format = "utf-8" - + self.disconnect_message = "!DISCONNECT" + def handle_client(conn, addr): print("Connection from: " + str(address)) connected = True while connected: msg_length = conn.recv(self.header_size).decode(self.format) - msg_length = int(msg_length) - msg = conn.recv(msg_length).decode(self.format) - print(f"[{addr - + if msg_length: + msg_length = int(msg_length) + msg = conn.recv(msg_length).decode(self.format) + if msg == disconnect_message: + connected = False + print(f"[{addr}] {msg}") + conn.close() def start(self): - self.server.listen() + self.server_socket.listen() + print(f"server is listening on {socket.gethostbyname(self.host)}") while True: - conn, address = server_socket.accept() - thread = threading.Thread(target = handle_client, args = (conn, addr)) + conn, address = self.server_socket.accept() + thread = threading.Thread(target = self.handle_client, args = (conn, address)) thread.start - print(f"Active threads: {threading.activeCount() - 1}") - + print(f"Active threads: {threading.active_count() - 1}") + if __name__ == '__main__': print("server starting") server = ServerVCKO()