From b9d5a799f409753722dba98949df6ff24af6a54c Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 11 Jul 2019 22:36:42 +0200 Subject: [PATCH] server and client initial commit --- src/client.py | 20 ++++++++++++++++++++ src/server.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/client.py create mode 100644 src/server.py diff --git a/src/client.py b/src/client.py new file mode 100644 index 0000000..19288fc --- /dev/null +++ b/src/client.py @@ -0,0 +1,20 @@ +import socket + +host_ip, server_port = "127.0.0.1", 9999 +data = " Hello how are you?\n" + +# Initialize a TCP client socket using SOCK_STREAM +tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +try: + # Establish connection to TCP server and exchange data + tcp_client.connect((host_ip, server_port)) + tcp_client.sendall(data.encode()) + + # Read data from the TCP server and close the connection + received = tcp_client.recv(1024) +finally: + tcp_client.close() + +print("Bytes Sent: {}".format(data)) +print("Bytes Received: {}".format(received.decode())) diff --git a/src/server.py b/src/server.py new file mode 100644 index 0000000..e017aa2 --- /dev/null +++ b/src/server.py @@ -0,0 +1,30 @@ +import socketserver + + +class Handler_TCPServer(socketserver.BaseRequestHandler): + """ + The TCP Server class for demonstration. + + Note: We need to implement the Handle method to exchange data + with TCP client. + + """ + + def handle(self): + # self.request - TCP socket connected to the client + self.data = self.request.recv(1024).strip() + print("{} sent:".format(self.client_address[0])) + print(self.data) + # just send back ACK for data arrival confirmation + self.request.sendall("ACK from TCP Server".encode()) + + +if __name__ == "__main__": + HOST, PORT = "localhost", 9999 + + # Init the TCP server object, bind it to the localhost on 9999 port + tcp_server = socketserver.TCPServer((HOST, PORT), Handler_TCPServer) + + # Activate the TCP server. + # To abort the TCP server, press Ctrl-C. + tcp_server.serve_forever()