Credit: Luther Blissett
Assuming you’re using the Internet to communicate:
import socket # Create a socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connect to the remote host and port sock.connect((remote_host, remote_port)) # Send a request to the host sock.send("Why don't you call me any more?\r\n") # Get the host's response, no more than, say, 1,024 bytes response_data = sock.recv(1024) # Terminate sock.close( )
The remote_host
string can be either a domain name, such
as 'www.python.org'
, or a dotted quad, such as
'194.109.137.226'
. The
remote_port
variable is an integer, such as 80
(the default HTTP port). If an error occurs, the failing operation
raises an exception of the socket.error
class. The
socket
module does not give you the ability to
control a timeout for the operations you attempt; if you need such
functionality, download the
timeoutsocket
module from http://www.timo-tasi.org/python/timeoutsocket.py,
place it anywhere on your Python sys.path
, and
follow the instructions in the module itself.
If you want file-like objects for your network I/O, you can build one
or more with the
makefile
method of the socket
object, rather than using the
latter’s send
and
receive
methods directly. You can independently
close
the socket object and each file obtained
from it, without affecting any other (or you can let garbage
collection close them for you). For example, if
sock
is a connected socket object, you could
write:
sockOut = sock.makefile('wb') sockIn = sock.makefile('r') sock.close( ) print >> sockOut, "Why don't you call me any more?\r" sockOut.close( ) for line in sockIn: # Python 2.2 only; 'in sockin.xreadlines( )' in 2.1 print 'received:', line,
Recipe 10.3; documentation for the standard
library module socket
in the Library Reference; the timeout modifications at http://www.timo-tasi.org/python/timeoutsocket.py,
although these will likely be incorporated into Python 2.3;
Perl Cookbook Recipe 17.1.
Get Python Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.