python 网络编程 (二)---异常
2014-05-31 15:20
411 查看
异常
python的socket模块实际上定义了4种可能出现的异常:
1)与一般I/O 和通信问题有关的socket.error;
2)与查询地址信息有关的socket.gaierror;
3)与其他地址错误有关的socket.herror;
4)与在一个socket上调用settimeout()后,处理超时有关的socket.timeout;
另外,数据只有在您调用了shutdown()函数后才能确保被发送。
flush()调用,从技术层面来看,因为makefile()的调用聪明的没有地址缓冲器(buffer),所以这个调用并不是必须的,但是如果因为某个原因而使用了缓冲器,则需要调用。
python的socket模块实际上定义了4种可能出现的异常:
1)与一般I/O 和通信问题有关的socket.error;
2)与查询地址信息有关的socket.gaierror;
3)与其他地址错误有关的socket.herror;
4)与在一个socket上调用settimeout()后,处理超时有关的socket.timeout;
import socket, sys, time host = sys.argv[1] textport = sys.argv[2] filename = sys.argv[3] #创建socket对象 try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error, e: print 'Strange error creating socket:%s' % e sys.exit(1) #创建端口号 try: port = int(textport) except ValueError: try: port = socket.getservbyname(textport, 'tcp') except socket.error, e: print 'Couldn not find your port:%s' % e sys.exit(1) #连接socket try: s.connect((host, port)) except socket.gaierror, e: print 'Address-related error connecting to server :%s' % e sys.exit(1) except socket.error, e: print 'Connection error:%s' % e sys.exit(1) fd = s.makefile('rw', 0) #使用文件类对象 print 'sleeping...' time.sleep(10) #线程休息10S print 'Continuing...' try: s.sendall("GET %s HTTP/1.0\r\n\r\n" % filename) except socket.error, e: print 'Error sending data:%s' % e sys.exit(1) try: fd.flush() except socket.error, e: print 'Error sending data: %s' % e sys.exit(1) try: s.shutdown(1) s.close() except socket.error, e: print 'Error sending data:%s' % e while True: try: buf = fd.read(2048) except socket.error, e: print 'Error receiving data:%s' % e sys.exit(1) if not len(buf): break sys.stdout.write(buf)
另外,数据只有在您调用了shutdown()函数后才能确保被发送。
try: s.shutdown(1) s.close() except socket.error, e: print 'Error sending data:%s' % e
flush()调用,从技术层面来看,因为makefile()的调用聪明的没有地址缓冲器(buffer),所以这个调用并不是必须的,但是如果因为某个原因而使用了缓冲器,则需要调用。
try: fd.flush() except socket.error, e: print 'Error sending data: %s' % e sys.exit(1)
相关文章推荐
- python3-网络编程-TypeError: send() argument 1 must be bytes or buffer, not str异常
- 关于python下网络编程
- Python 网络编程起步(Socket发送消息)
- Python PycURL 网络编程
- Python网络编程 获取页面中的天气信息
- Python网络编程之SocketServer
- Python网络编程之medusa
- Python网络编程
- Python的网络编程
- Python网络编程之多线程服务端
- Python 网络编程起步(Socket发送消息)
- Python的网络编程(三)
- Python的网络编程(二)
- Python的网络编程
- Python天天美味(27) - 网络编程起步(Socket发送消息)
- Python的网络编程(一)
- python天天进步(5)--网络编程之数据传输UDP
- Python网络编程之Sockets简介
- Python网络编程 HTML解析
- Java网络编程从入门到精通(19):套接字(Socket)的异常