I am more into web development but out of boredom decided to dabble into networking… okay let’s see what I have learned so far.

Networking 

2018-05-12 10:56:17 AM


Python Server

This server opens its service at port 9999 and listens and connects to an incoming tcp stream. Once a connection is established, it sends the client “Hello World” as a confirmation of connection. It then listens to what the client has to say and closes as soon as the client closes closes the connection.

#file name -> s.py (sorry I am not that creative!)
#server
import socket

target_host = "localhost"

target_port = 9999

#create server socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#since it is a server, you will have to listen..but first bind the socket to a port

server.bind((target_host, target_port))

server.listen(1) #argument->backlog of connections (number of clients the server can listen to simultaneously)

connection, addr = server.accept() #when a client connects to this "socket -> localhost:9999", the server accepts the client and establishes a connection

#what can I do with the newly created connection ? probably wait for the client to send something first or the other way around

connection.send("Hello World".encode()) # so in this case, the server sends first;#encode converts the string to bytes which are sent over the connection to the server

response, addr= connection.recvfrom(4096) # the server is now waiting for a response from the client; 4096 --> maximum byte length of data correct me if I am wrong

print(response.decode()) #the response is sent in bytes, so we need to decode (convert to a str type) before we pass it the the print function

connection.close() #already! but we just met.... **sad face**

Python Client

The following code generates a client service which tells the server above “You better call becky with the good hair” once it recieves a response from m the server. After which, it closes the connection.

#file name-> c.py (yep... just role with it)
import socket

remote_host = "localhost"

remote_port = 9999

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #creates a socket

#let's connect to a server / or another socket
client.connect((remote_host, remote_port))

#since our server first sent data upon accepted connection, our client will first listen for a response and then send something
response = client.recv(4096)

#send something back to the server
client.send("You better call becky with the good hair!".encode())

print(response.decode()) #similar to the server's case

client.close() #disable socket

Watch the video below!!

%d bloggers like this: