python出现套接字创建不成功_python之优雅处理套接字错误

该博客展示了在Python中如何优雅地处理套接字错误,通过示例代码解释了在创建、连接、发送和接收数据时可能出现的错误,并提供了异常处理方法。内容涵盖了socket.error异常的捕获和退出策略,强调了在网络编程中处理这类错误的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/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网络编程——处理套接字错误

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

JMeter中的HTTPS套接字错误

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

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

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

Python之socket(套接字)

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

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

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

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

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

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

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

python基础之socket套接字基础part2

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

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

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

随机推荐

AngularJS笔记---作用域和控制器

什么是作用域. 什么是控制器, 作用域包含了渲染视图时所需的功能和数据,它是所有视图的唯一源头.可以将作用域理解成试图模型(ViewModel). 作用域之间可以是包含关系也可以是独立关系.可以通过设 ...

PTA Sort Three Distinct Keys

Suppose you have an array of N elements, containing three distinct keys, "true", "fal ...

初始Spring

Spring框架概述 1.什么是Spring struts2----是web层框架,围绕请求和响应 Hibernate----是持久层框架,围绕业务的增删改查 Spring是分层的JavaSE/EE ...

为什么要在block用weak self

block会给内部所有的对象引用计数加一,这一方面会带来潜在的retain cycle,不过我们可以通过Weak Self的手段解决.另一方面比较重要就是,它会延长对象的生命周期. 在block前面写 ...

Windows下搭建MySql Master-Master Replication

1.首先下载最新版的MySql Server (http://dev.mysql.com/downloads/windows/installer/) 2.安装MySql Server到两台机器上 My ...

2014.6.14模拟赛【bzoj1592】[Usaco2008 Feb]Making the Grade 路面修整

Description FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了 ...

VCS仿真 Dump Memory

VCS仿真 Dump Memory 两种方法 vcs联合verdi生成fsdb文件 vcs生成vpd文件 VCS联合verdi生成fsdb文件 1.testbench中加入如下语句: initial ...

MySQL必知必会笔记<2>

[英]ben Forta著 5 1.0  *使用扩展查询* |---->select note from table   where Match(note) Against('anl'); |- ...

mysql-5.7.18-winx64 免安装版配置

如题,最新的都是只有免安装版的,可以官网下载zip的压缩包. 下载后解压,如下 下面就开始配置 1.在path中添加环境变量 ;D:\coding\mysql-5.7.18-winx64\bin; ← ...

Linux 入侵检测小结

Linux  入侵检测小结 0x00 审计命令 在linux中有5个用于审计的命令: last:这个命令可用于查看我们系统的成功登录.关机.重启等情况:这个命令就是将/var/log/wtmp文件格式 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值