commit df8436e0b77bffcd4877c7b7e886274b52f71055 Author: Braeden57 Date: Mon Oct 12 16:45:42 2020 -0700 First Commit diff --git a/') b/') new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..f67439f --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Python Socket + +This is Just what I have learnt in python socket. Nothing Special at all. \ No newline at end of file diff --git a/client.py b/client.py new file mode 100644 index 0000000..036c804 --- /dev/null +++ b/client.py @@ -0,0 +1,28 @@ +import socket + +HEADER = 64 +PORT = 5050 +FORMAT = 'utf-8' +DISCONNECT_MESSAGE = '!DISCONNECT' +SERVER = '169.254.95.158' +ADDR = (SERVER, PORT) + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +try: + client.connect(ADDR) + def send(msg): + message = msg.encode(FORMAT) + msg_length = len(msg) + send_length = str(msg_length).encode(FORMAT) + send_length += b' ' * (HEADER - len(send_length)) + client.send(send_length) + client.send(message) + + print('Type "disconnect" to disconnect from the server.') + while True: + x = input('>') + if x.upper() == 'DISCONNECT': + send(DISCONNECT_MESSAGE) + break + else: send(x) +except ConnectionRefusedError: print('Unable to Connect to server.\nThe Server may be down or is unavailable.') diff --git a/server.py b/server.py new file mode 100644 index 0000000..685d12f --- /dev/null +++ b/server.py @@ -0,0 +1,39 @@ +import socket +import threading + +HEADER = 64 +PORT = 5050 +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 handleClient(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: break + print(f'[{addr}] - {msg}') + + conn.close() + +def start(): + server.listen() + print(f'[LISTENING] - Server is listening on {SERVER}') + while True: + conn, addr = server.accept() + thread = threading.Thread(target=handleClient, args=(conn, addr)) + thread.start() + thread2 = threading.Thread(target=quit) + thread2.start() + print(f'[ACTIVE CONNECTIONS] - {threading.activeCount() - 1}') + +print('[Starting] - Server Starting...') +start()