As of now, you guys must be familiar with the socket methods described in the previous tutorial. Now we will use those methods in a simple Client-Server Program.
#!/usr/bin/python #This is tcp_server.py script import socket #line 1: Import socket module s = socket.socket() #line 2: create a socket object host = socket.gethostname() #line 3: Get current machine name port = 9999 #line 4: Get port number for connection s.bind((host,port)) #line 5: bind with the address print "Waiting for connection..." s.listen(5) #line 6: listen for connections while True: conn,addr = s.accept() #line 7: connect and accept from client print 'Got Connection from', addr conn.send('Server Saying Hi') conn.close() #line 8: Close the connection
This script will do nothing as of now. It waits for a client to connect at the port specified. If we run this script now, without having a client, it will wait for the connection,
Similarly, every website you visit has a server on which it is hosted, which is always waiting for clients to connect. Now let's create a
client.py program and try to connect with our
Below is the
client.py program. The client tries to connect to server's port,
9999(well defined port). The code line,
s.connect((host, port)) opens up a TCP connection to the hostname on the port
#!/usr/bin/python #This is tcp_client.py script import socket s = socket.socket() host = socket.gethostname() # Get current machine name port = 9999 # Client wants to connect to server's # port number 9999 s.connect((host,port)) print s.recv(1024) # 1024 is bufsize or max amount # of data to be received at once s.close()
Now, run the
server.py script first(if you haven’t yet) and then run the
client.py script. If everything goes well, you will see the output as follows:
Note: Here we are running both client and server on the same machine but a real life scenario is surely different from this, but is similar.
Notice that after executing, terminates but
server.py is still running. This is what happens in real scenario too. After fulfiling your request, the Studytonight server keeps on running 24*7 to serve other users.
client.py, server says: Got Connection from ('192.168.43,217', 43402). Here port
43402 is random or ephemeral port assigned to the client by the operating system.