From 90c3391182db6fb2ed8916839629a9f0afc0c537 Mon Sep 17 00:00:00 2001 From: lukesau Date: Wed, 12 Apr 2023 20:16:18 -0700 Subject: [PATCH] gotta go --- clientgui.py | 22 +++++++++++----------- testclient.py | 28 ++++++++++++++++++++++++++++ testserver.py | 42 ++++++++++++++++++++++++++++++++++++++++++ vckoserver.py | 15 ++++++++------- 4 files changed, 89 insertions(+), 18 deletions(-) create mode 100644 testclient.py create mode 100644 testserver.py diff --git a/clientgui.py b/clientgui.py index 2152d85..57a3347 100755 --- a/clientgui.py +++ b/clientgui.py @@ -12,34 +12,34 @@ class MyFrame(wx.Frame): my_btn.Bind(wx.EVT_BUTTON, self.on_press) my_sizer.Add(my_btn, 0, wx.ALL | wx.CENTER, 5) panel.SetSizer(my_sizer) - self.host = "lukesau.com" + self.host = "127.0.1.1" self.port = 5000 # socket server port number - self.header_size = 1024 + self.header_size = 64 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: - self.send(message) + client_socket = socket.socket() + client_socket.connect((self.host, self.port)) + self.send(message, client_socket) self.text_ctrl.SetValue("") - 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): + self.send(self.disconnect_message, client_socket) + def send(self, msg, input_socket): 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) + input_socket.send(send_length) + input_socket.send(message) print("done sending") + print(input_socket.recv(2048).decode(self.format)) + diff --git a/testclient.py b/testclient.py new file mode 100644 index 0000000..a3c8353 --- /dev/null +++ b/testclient.py @@ -0,0 +1,28 @@ +import socket + +HEADER = 1024 +PORT = 5000 +FORMAT = 'utf-8' +DISCONNECT_MESSAGE = "!DISCONNECT" +SERVER = "127.0.1.1" +ADDR = (SERVER, PORT) + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +client.connect(ADDR) + +def send(msg): + message = msg.encode(FORMAT) + msg_length = len(message) + send_length = str(msg_length).encode(FORMAT) + send_length += b' ' * (HEADER - len(send_length)) + client.send(send_length) + client.send(message) + print(client.recv(2048).decode(FORMAT)) + +send("Hello World!") +input() +send("Hello Everyone!") +input() +send("Hello Tim!") + +send(DISCONNECT_MESSAGE) diff --git a/testserver.py b/testserver.py new file mode 100644 index 0000000..abf76b5 --- /dev/null +++ b/testserver.py @@ -0,0 +1,42 @@ +import socket +import threading + +HEADER = 64 +PORT = 5000 +SERVER = socket.gethostbyname(socket.gethostname()) +ADDR = (SERVER, PORT) +FORMAT = 'utf-8' +DISCONNECT_MESSAGE = "!DISCONNECT" + +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server.bind(ADDR) + +def handle_client(conn, addr): + print(f"[NEW CONNECTION] {addr} connected.") + + connected = True + while connected: + msg_length = conn.recv(HEADER).decode(FORMAT) + if msg_length: + msg_length = int(msg_length) + msg = conn.recv(msg_length).decode(FORMAT) + if msg == DISCONNECT_MESSAGE: + connected = False + + print(f"[{addr}] {msg}") + conn.send("Msg received".encode(FORMAT)) + conn.close() + + +def start(): + server.listen() + print(f"[LISTENING] Server is listening on {SERVER}") + while True: + conn, addr = server.accept() + thread = threading.Thread(target=handle_client, args=(conn, addr)) + thread.start() + print(f"[ACTIVE CONNECTIONS] {threading.active_count() - 1}") + + +print("[STARTING] server is starting...") +start() diff --git a/vckoserver.py b/vckoserver.py index 4066cd4..1ddde2b 100755 --- a/vckoserver.py +++ b/vckoserver.py @@ -6,14 +6,12 @@ class ServerVCKO: def __init__(self): self.host = socket.gethostname() self.port = 5000 - self.server_socket = socket.socket() - 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)) + print(f"Connection from: {addr}") connected = True while connected: msg_length = conn.recv(self.header_size).decode(self.format) @@ -22,14 +20,17 @@ class ServerVCKO: msg = conn.recv(msg_length).decode(self.format) if msg == disconnect_message: connected = False - print(f"[{addr}] {msg}") + print(f"[{addr}] {msg}") + conn.send("msg received".encode(self.format)) conn.close() def start(self): - self.server_socket.listen() + server_socket = socket.socket() + server_socket.bind((self.host, self.port)) + server_socket.listen() print(f"server is listening on {socket.gethostbyname(self.host)}") while True: - conn, address = self.server_socket.accept() - thread = threading.Thread(target = self.handle_client, args = (conn, address)) + conn, addr = server_socket.accept() + thread = threading.Thread(target=self.handle_client, args=(conn, addr)) thread.start print(f"Active threads: {threading.active_count() - 1}")