Writing a TCP Client
Credit: Luther Blissett
Problem
You want to connect to a socket on a remote machine.
Solution
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( )Discussion
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 ...