42 lines
1.3 KiB
Python
Executable File
42 lines
1.3 KiB
Python
Executable File
import socket
|
|
import time
|
|
import threading
|
|
|
|
class ServerVCKO:
|
|
def __init__(self):
|
|
self.host = socket.gethostname()
|
|
self.port = 5000
|
|
self.header_size = 1024
|
|
self.format = "utf-8"
|
|
self.disconnect_message = "!DISCONNECT"
|
|
|
|
def handle_client(conn, addr):
|
|
print(f"Connection from: {addr}")
|
|
connected = True
|
|
while connected:
|
|
msg_length = conn.recv(self.header_size).decode(self.format)
|
|
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.send("msg received".encode(self.format))
|
|
conn.close()
|
|
def start(self):
|
|
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, addr = server_socket.accept()
|
|
thread = threading.Thread(target=self.handle_client, args=(conn, addr))
|
|
thread.start
|
|
print(f"Active threads: {threading.active_count() - 1}")
|
|
|
|
if __name__ == '__main__':
|
|
print("server starting")
|
|
server = ServerVCKO()
|
|
server.start()
|
|
|