This commit is contained in:
2023-04-12 20:16:18 -07:00
parent 61c9bb594d
commit 90c3391182
4 changed files with 89 additions and 18 deletions

View File

@@ -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))

28
testclient.py Normal file
View File

@@ -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)

42
testserver.py Normal file
View File

@@ -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()

View File

@@ -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}")