Advertisement
rfmonk

socket_errors.py

May 15th, 2014
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.48 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3.  
  4. import sys
  5. import socket
  6. import argparse
  7.  
  8.  
  9. def main():
  10.     parser = argparse.ArgumentParser(description="Socket Error")
  11.     parser.add_argument('--host', action="store", dest="host", required=False)
  12.     parser.add_argument('--port', action="store", dest="port", type=int, required=False)
  13.     parser.add_argument('--file', action="store", dest="file", required=False)
  14.     given_args = parser.parse_args()
  15.     host = given_args.host
  16.     port = given_args.port
  17.     filename = given_args.file
  18.  
  19.     # create socket
  20.     try:
  21.         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  22.     except socket.error, e:
  23.         print "Error creating socket: %s" % e
  24.         sys.exit(1)
  25.  
  26.     # connect to given host / port
  27.     try:
  28.         s.connect((host, port))
  29.     except socket.gaierror, e:
  30.         print "Address-related error connecting to server: %s" % e
  31.         sys.exit(1)
  32.     except socket.error, e:
  33.         print "Connection error: %s" % e
  34.         sys.exit(1)
  35.  
  36.     # sending data
  37.     try:
  38.         s.sendall("GET %s HTTP/1.0\r\n\r\n" % filename)
  39.     except socket.error, e:
  40.         print "Error sending data: %s" % e
  41.         sys.exit(1)
  42.  
  43.     # waiting to receive from remote host
  44.     while 1:
  45.         try:
  46.             buf = s.recv(2048)
  47.         except socket.error, e:
  48.             print "Error receiving data: %s" % e
  49.             sys.exit(1)
  50.         if not len(buf):
  51.             break
  52.         # write the received data
  53.         sys.stdout.write(buf)
  54.  
  55.     if __name__ == '__main__':
  56.         main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement