Files
Python-2020/socket_server.py
T
2021-01-08 02:34:47 +01:00

65 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python
"""
Socket HOST.
"""
import socket
import threading
HEADER = 64
PORT = 5050
def get_host():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# doesn't have to be reachable
s.connect(('10.255.255.255', 1))
host = s.getsockname()[0]
except Exception:
host = '127.0.0.1'
finally:
s.close()
return host
# HOST = socket.gethostbyname(socket.gethostname())
print("before get host by name")
HOST = get_host()
print(HOST)
ADDR = (HOST, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = '!DISCONNECT'
HOST = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST.bind(ADDR)
def handle_client(conn, addr):
"""Deal with one client."""
print(f"[NEW CONNECTION] {addr} connected.")
while True:
msg_length = conn.recv(HEADER).decode(FORMAT)
if not msg_length:
continue
msg_length = int(msg_length)
msg = conn.recv(msg_length).decode(FORMAT)
print(f"[{addr}] {msg}")
if msg == DISCONNECT_MESSAGE:
break
conn.send("Msg received".encode(FORMAT))
conn.close()
print(f"[NEW CONNECTION] {addr} disconnected.")
def start():
"""Start the HOST."""
HOST.listen()
print(f"[LISTENING] HOST listening on {HOST}")
while True:
conn, addr = HOST.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
if __name__ == "__main__":
print("[STARTING] HOST is starting ...")
start()