7. Working with TCP Sockets

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.

Simple 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 server.py.

Simple Client Program

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 9999.
#!/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.
After executing 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.

Flow Diagram of the Program


# Table of Contents:
28. Changing User Agent

# Ebooks for Network Programming with Python



logoblog

No comments:

Post a Comment