http://www.tutorialspoint.com/python/python_networking .htm Copyright © tutorialspoint.com PYTHON NETWORK PROGRAMMING Pythonprovides two levels of access to network services. At a low level, youcanaccess the basic socket support inthe underlying operating system, whichallows youto implement clients and servers for both connection-oriented and connectionless protocols. Pythonalso has libraries that provide higher-levelaccess to specific application-levelnetwork protocols, suchas FTP, HTTP, and so on. This tutorialgives youunderstanding onmost famous concept inNetworking - Socket Programming What is Sockets? Sockets are the endpoints of a bidirectionalcommunications channel. Sockets may communicate withina process, betweenprocesses onthe same machine, or betweenprocesses ondifferent continents. Sockets may be implemented over a number of different channeltypes: Unix domainsockets, TCP, UDP, and so on. The socket library provides specific classes for handling the commontransports as wellas a generic interface for handling the rest. Sockets have their ownvocabulary: Term Description domain The family of protocols that willbe used as the transport mechanism. These values are constants suchas AF_INET, PF_INET, PF_UNIX, PF_X25, and so on. type The type of communications betweenthe two endpoints, typically SOCK_STREAM for connection-oriented protocols and SOCK_DGRAM for connectionless protocols. protocol Typically zero, this may be used to identify a variant of a protocolwithina domainand type. hostname The identifier of a network interface: A string, whichcanbe a host name, a dotted-quad address, or anIPV6 address incolon(and possibly dot) notation A string "<broadcast>", whichspecifies anINADDR_BROADCAST address. A zero-lengthstring, whichspecifies INADDR_ANY, or AnInteger, interpreted as a binary address inhost byte order. port Eachserver listens for clients calling onone or more ports. A port may be a Fixnum port number, a string containing a port number, or the name of a service. The socket Module: To create a socket, youmust use the socket.socket() functionavailable insocket module, whichhas the general syntax: s = socket.socket (socket_family, socket_type, protocol=0) Here is the descriptionof the parameters: socket_family: This is either AF_UNIX or AF_INET, as explained earlier. socket_type: This is either SOCK_STREAM or SOCK_DGRAM.
protocol: This is usually left out, defaulting to 0. Once youhave socket object, thenyoucanuse required functions to create your client or server program. Following is the list of functions required: Server Socket Methods: Method Description s.bind() This method binds address (hostname, port number pair) to socket. s.listen() This method sets up and start TCP listener. s.accept() This passively accept TCP client connection, waiting untilconnectionarrives (blocking). Client Socket Methods: Method Description s.connect() This method actively initiates TCP server connection. General Socket Methods: Method Description s.recv() This method receives TCP message s.send() This method transmits TCP message s.recvfrom() This method receives UDP message s.sendto() This method transmits UDP message s.close() This method closes socket socket.gethostname() Returns the hostname. A Simple Server: To write Internet servers, we use the socket functionavailable insocket module to create a socket object. A socket object is thenused to callother functions to setup a socket server. Now callbind(hostname, port functionto specify a port for your service onthe givenhost. Next, callthe accept method of the returned object. This method waits untila client connects to the port you specified, and thenreturns a connection object that represents the connectionto that client. #!/usr/bin/python # This is server.py file import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.bind((host, port)) # Bind to the port s.listen(5) # Now wait for client connection.
while True: c, addr = s.accept() # Establish connection with client. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Close the connection A Simple Client: Now we willwrite a very simple client programwhichwillopena connectionto a givenport 12345 and givenhost. This is very simple to create a socket client using Python's socket module function. The socket.connect(hosname, port ) opens a TCP connectionto hostname onthe port. Once youhave a socket open, youcanread fromit like any IO object. Whendone, remember to close it, as youwould close a file. The following code is a very simple client that connects to a givenhost and port, reads any available data fromthe socket, and thenexits: #!/usr/bin/python # This is client.py file import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.connect((host, port)) print s.recv(1024) s.close # Close the socket when done Now runthis server.py inbackground and thenrunabove client.py to see the result. # Following would start a server in background. $ python server.py & # Once server is started run client as follows: $ python client.py This would produce following result: Got connection from ('127.0.0.1', 48437) Thank you for connecting Python Internet modules A list of some important modules whichcould be used inPythonNetwork/Internet programming. Protocol Common function Port No Python module HTTP Web pages 80 httplib, urllib, xmlrpclib NNTP Usenet news 119 nntplib FTP File transfers 20 ftplib, urllib SMTP Sending email 25 smtplib POP3 Fetching email 110 poplib IMAP4 Fetching email 143 imaplib Telnet Command lines 23 telnetlib Gopher Document transfers 70 gopherlib, urllib
Please check allthe libraries mentioned above to work withFTP, SMTP, POP, and IMAP protocols. Further Readings: I have givenyoua quick start withSocket Programming. It's a big subject so its recommended to go throughthe following link to find more detailon: Unix Socket Programming. PythonSocket Library and Modules.

Python networking

  • 1.
    http://www.tutorialspoint.com/python/python_networking .htm Copyright© tutorialspoint.com PYTHON NETWORK PROGRAMMING Pythonprovides two levels of access to network services. At a low level, youcanaccess the basic socket support inthe underlying operating system, whichallows youto implement clients and servers for both connection-oriented and connectionless protocols. Pythonalso has libraries that provide higher-levelaccess to specific application-levelnetwork protocols, suchas FTP, HTTP, and so on. This tutorialgives youunderstanding onmost famous concept inNetworking - Socket Programming What is Sockets? Sockets are the endpoints of a bidirectionalcommunications channel. Sockets may communicate withina process, betweenprocesses onthe same machine, or betweenprocesses ondifferent continents. Sockets may be implemented over a number of different channeltypes: Unix domainsockets, TCP, UDP, and so on. The socket library provides specific classes for handling the commontransports as wellas a generic interface for handling the rest. Sockets have their ownvocabulary: Term Description domain The family of protocols that willbe used as the transport mechanism. These values are constants suchas AF_INET, PF_INET, PF_UNIX, PF_X25, and so on. type The type of communications betweenthe two endpoints, typically SOCK_STREAM for connection-oriented protocols and SOCK_DGRAM for connectionless protocols. protocol Typically zero, this may be used to identify a variant of a protocolwithina domainand type. hostname The identifier of a network interface: A string, whichcanbe a host name, a dotted-quad address, or anIPV6 address incolon(and possibly dot) notation A string "<broadcast>", whichspecifies anINADDR_BROADCAST address. A zero-lengthstring, whichspecifies INADDR_ANY, or AnInteger, interpreted as a binary address inhost byte order. port Eachserver listens for clients calling onone or more ports. A port may be a Fixnum port number, a string containing a port number, or the name of a service. The socket Module: To create a socket, youmust use the socket.socket() functionavailable insocket module, whichhas the general syntax: s = socket.socket (socket_family, socket_type, protocol=0) Here is the descriptionof the parameters: socket_family: This is either AF_UNIX or AF_INET, as explained earlier. socket_type: This is either SOCK_STREAM or SOCK_DGRAM.
  • 2.
    protocol: This isusually left out, defaulting to 0. Once youhave socket object, thenyoucanuse required functions to create your client or server program. Following is the list of functions required: Server Socket Methods: Method Description s.bind() This method binds address (hostname, port number pair) to socket. s.listen() This method sets up and start TCP listener. s.accept() This passively accept TCP client connection, waiting untilconnectionarrives (blocking). Client Socket Methods: Method Description s.connect() This method actively initiates TCP server connection. General Socket Methods: Method Description s.recv() This method receives TCP message s.send() This method transmits TCP message s.recvfrom() This method receives UDP message s.sendto() This method transmits UDP message s.close() This method closes socket socket.gethostname() Returns the hostname. A Simple Server: To write Internet servers, we use the socket functionavailable insocket module to create a socket object. A socket object is thenused to callother functions to setup a socket server. Now callbind(hostname, port functionto specify a port for your service onthe givenhost. Next, callthe accept method of the returned object. This method waits untila client connects to the port you specified, and thenreturns a connection object that represents the connectionto that client. #!/usr/bin/python # This is server.py file import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.bind((host, port)) # Bind to the port s.listen(5) # Now wait for client connection.
  • 3.
    while True: c, addr= s.accept() # Establish connection with client. print 'Got connection from', addr c.send('Thank you for connecting') c.close() # Close the connection A Simple Client: Now we willwrite a very simple client programwhichwillopena connectionto a givenport 12345 and givenhost. This is very simple to create a socket client using Python's socket module function. The socket.connect(hosname, port ) opens a TCP connectionto hostname onthe port. Once youhave a socket open, youcanread fromit like any IO object. Whendone, remember to close it, as youwould close a file. The following code is a very simple client that connects to a givenhost and port, reads any available data fromthe socket, and thenexits: #!/usr/bin/python # This is client.py file import socket # Import socket module s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.connect((host, port)) print s.recv(1024) s.close # Close the socket when done Now runthis server.py inbackground and thenrunabove client.py to see the result. # Following would start a server in background. $ python server.py & # Once server is started run client as follows: $ python client.py This would produce following result: Got connection from ('127.0.0.1', 48437) Thank you for connecting Python Internet modules A list of some important modules whichcould be used inPythonNetwork/Internet programming. Protocol Common function Port No Python module HTTP Web pages 80 httplib, urllib, xmlrpclib NNTP Usenet news 119 nntplib FTP File transfers 20 ftplib, urllib SMTP Sending email 25 smtplib POP3 Fetching email 110 poplib IMAP4 Fetching email 143 imaplib Telnet Command lines 23 telnetlib Gopher Document transfers 70 gopherlib, urllib
  • 4.
    Please check allthelibraries mentioned above to work withFTP, SMTP, POP, and IMAP protocols. Further Readings: I have givenyoua quick start withSocket Programming. It's a big subject so its recommended to go throughthe following link to find more detailon: Unix Socket Programming. PythonSocket Library and Modules.