![]() |
VOOZH | about |
Socket programming is a way of connecting two nodes on a network to communicate with each other. One socket(node) listens on a particular port at an IP, while the other socket reaches out to the other to form a connection. The server forms the listener socket while the client reaches out to the server.
They are the real backbones behind web browsing. In simpler terms, there is a server and a client.
Socket programming is started by importing the socket library and making a simple socket.
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Here we made a socket instance and passed it two parameters. The first parameter is AF_INET and the second one is SOCK_STREAM. AF_INET refers to the address-family ipv4. The SOCK_STREAM means connection-oriented TCP protocol.
Now we can connect to a server using this socket.
Connecting to a server:
Note that if any error occurs during the creation of a socket then a socket. error is thrown and we can only connect to a server by knowing its IP. You can find the IP of the server by using this :
$ ping www.google.com
You can also find the IP using python:
import socket
ip = socket.gethostbyname('www.google.com')
print ip
Here is an example of a script for connecting to Google.
Output :
Socket successfully created there was an error resolving the host
Here when we will be successfully connected the output will be:
Socket successfully created the socket has successfully connected to google
Server:
A server has a bind() method which binds it to a specific IP and port so that it can listen to incoming requests on that IP and port. A server has a listen() method which puts the server into listening mode. This allows the server to listen to incoming connections. And last a server has an accept() and close() method. The accept method initiates a connection with the client and the close method closes the connection with the client.
Client :
Now we need something with which a server can interact. We could telnet to the server like this just to know that our server is working. Type these commands in the terminal:
# start the server $ python server.py # keep the above terminal open # now open another terminal and type: $ telnet localhost 12345
If 'telnet' is not recognized. On windows search windows features and turn on the "telnet client" feature.
Output :
# in the server.py terminal you will see
# this output:
Socket successfully created
socket binded to 12345
socket is listening
Got connection from ('127.0.0.1', 52617)# In the telnet terminal you will get this: Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Thank you for connectingConnection closed by foreign host.
This output shows that our server is working.
Now for the client-side:
# start the server:
$ python server.py
Socket successfully created
socket binded to 12345
socket is listening
Got connection from ('127.0.0.1', 52617)# start the client: $ python client.py Thank you for connecting
Reference: Python Socket Programming