#!/usr/local/bin/python3.5
#coding:utf-8 import sys
import socket
import argparse def main():
#setup argument Parsing
parser = argparse.ArgumentParser(description='socket error examples')
parser.add_argument('--host', action='store', dest='host', required=False)
parser.add_argument('--port',action='store', dest='port', type=int, required=False)
parser.add_argument('--file', action='store', dest='file', required=False)
given_args=parser.parse_args()
host = given_args.host
port = given_args.port
filename = given_args.file #first try-except block --create socket
try:
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("error creating socket:" % e)
sys.exit(1) #Second try-except block -- connect to given host/PORT
try:
s.connect((host, port))
except socket.gaierror as e:
print("address-related error connectiong to server : %s" % e )
sys.exit(1)
except socket.error as e:
print("connection error: %s" % e)
sys.exit(1) #third try-except block -- sending data
try:
s.sendall(("GET %s HTTP/1.0\r\n\r\n" % filename).encode(encoding='utf-8'))
except socket.error as e:
print("Error sending data: %s" % e)
sys.exit(1) while 1:
#Fourth tr-except block --waiting to receive data from remote host
try:
buf = str(s.recv(2048), 'utf-8')
except socket.error as e:
print("error receiving data: %s" % e)
sys.exit(1)
if not len(buf):
break
# write the received data
sys.stdout.write(buf) if __name__ == '__main__':
main()

展示

end!

python之优雅处理套接字错误的更多相关文章

  1. Python网络编程——处理套接字错误

    在网络应用中,经常会遇到这种情况:一方尝试连接,但另一方由于网络媒介失效或者其他原因无法响应. Python的Socket库提供了一个方法,能通过socket.error异常优雅地处理套接字错误. 1 ...

  2. JMeter中的HTTPS套接字错误

    Apache JMeter对启用SSL的应用程序执行性能和/或负载测试时,SSL套接字错误可能是经常遇到的麻烦,严重阻碍了您的测试工作.本文重点介绍如何通过相应地配置和调优JMeter来克服这些与连接 ...

  3. Python中利用原始套接字进行网络编程的示例

    Python中利用原始套接字进行网络编程的示例 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构 ...

  4. Python之socket(套接字)

    Socket 一.概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  5. Python网络编程——修改套接字发送和接收的缓冲区大小

    很多情况下,默认的套接字缓冲区大小可能不够用.此时,可以将默认的套接字缓冲区大小改成一个更合适的值. 1. 代码 # ! /usr/bin/env python # -*- coding: utf-8 ...

  6. Python学习-15.Python的中的套接字socket

    Python应用最广泛的要数web方面了.因此,socket显得十分重要. 要使用socket,必须引入socket模块,因此在Python脚本开头先写入 import socket 学过socket ...

  7. Python开发基础-Day24socket套接字基础2

    基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 #客户端 import socket ip_port=('127 ...

  8. python基础之socket套接字基础part2

    基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 1 #客户端 2 import socket 3 ip_port ...

  9. python网络编程-socket套接字通信循环-粘包问题-struct模块-02

    前置知识 不同计算机程序之间数据的传输 应用程序中的数据都是从程序所在计算机内存中读取的. 内存中的数据是从硬盘读取或者网络传输过来的 不同计算机程序数据传输需要经过七层协议物理连接介质才能到达目标程 ...

随机推荐

  1. Python学习笔记——Day4

    字符串操作 string典型的内置方法: count() center() startswith() find() format() lower() upper() strip() replace() ...

  2. HTML5 history新特性pushState、replaceState,popstate

    http://blog.csdn.net/tianyitianyi1/article/details/7426606 https://developer.mozilla.org/zh-CN/docs/ ...

  3. 聊一下JS中的作用域scope和闭包closure

    聊一下JS中的作用域scope和闭包closure scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解,closure就不一样了.我就被这个概念困扰了很久 ...

  4. Js操作DOM小练习_01

    1.页面引入jQuery文件和bootstrap文件: 2.贴上代码 <!DOCTYPE html> <html lang="en"> <head&g ...

  5. Intellij Idea系列之Tomcat环境的搭建(三)

    Intellij Idea系列之Tomcat环境的搭建(三) 一. 编写背景 Intellij Idea在刚上手的时候很多人吐槽,"god, 这么难用的IDE有谁用呀?",的确,I ...

  6. C# Dictionary 的几种遍历方法

    Dictionary<string, int> list = new Dictionary<string, int>(); list.Add("d", 1) ...

  7. 10G R2 参数文件相关

    CLUSTER_DATABASE Property Description Parameter type Boolean Default value false Modifiable No Range ...

  8. Activity

    activity的生命周期: 第一个是:点击按钮切换到另一个activity界面. 第二个是:单击物理返回键的时候,是对当前的activity进行销毁动作. Activity的启动方式:直接启动和匿名 ...

  9. listed

    http://sebastianruder.com/optimizing-gradient-descent/ http://www.nag.co.uk/pss/nag-and-algorithmic- ...

  10. PL/SQL 查找1-100之间的素数

    --实现查找1-100之间的素数 declare v_no ; --标记是第几个素数 v_number number; --表示1-100之间的数 v_num number; begin .. loo ...