Python Sockets: Clean, Concise
I was recently pleased to find an excuse to code some Python for the first time. I am impressed. Python doesn’t feel like other programming languages. When I write Python I feel like I’m just telling the computer what to do, rather than constantly worrying about essoteric language issues. What I mean is this. While coding Java, I am constantly thinking about class design, exception handling, patterns, etc. While coding C++, I worry a lot about memory management and I spend a lot of time trying to remember funky STL APIs. However, while coding Python the other day, I almost forgot I was programming. It was like I was just telling the computer what to do, line after line. My day’s work culminated with a pleasant experience coding to the Python socket API. Read on for the details.
Coding Python client sockets is simple and intuitive. You just create a socket, set it up, connect it, and let Python’s superb exception handling take care of any problems. Like this:
try:
host = "example.com"
port = 80
# Create a socket object:
s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
# If any operation takes more than 2 seconds, drop to the "except" below
s.settimeout( 2 )
# Connect to the host
s.connect( ( host, port ) )
# Send "Some string\n" to the host
s.send( "Some string\n" )
# See if the host has anything to say in reply
response_string, server = s.recvfrom(4096)
# Print the response
print response_string
except socket.error, msg:
# If anything bad happened above, this runs:
print "An error occurred:", msg
else:
# If all went well (no exceptions), we get here:
print "Succcess!"
All told, I got a good ROI on learning Python. I had a working application, complete with error handling, in under a day with minimal code. There is a plethora of Python info on the web, and though I find its documentation site to be lacking compared to PHP’s docs, it’s pretty good.
4 comments to “Python Sockets: Clean, Concise”
very nice, that worked immediately.
now to implement it on the localhost ^.^
Superb explanation for a newbie!
Thanks
But socket.error is not defined, is it?
This is a 12 year old post. Python has changed a little since then.