python文件传输模块_python基础--基于套接字进行文件传输、异常处理、socketserver模块...

异常处理:

什么是异常处理:

程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表现出来,造成的影响就是整个程序无法再正常运行

异常的结构:

异常的类型、异常的信息、异常的位置

异常的种类:

1、语法错误

是你程序能立刻解决的,这种错误是不能被容忍的,语法上的错误发现之后应该立刻解决

2、逻辑错误

逻辑错误无法一眼就看出来,因为是针对逻辑上的错误,可以采用异常处理机制进行捕获

常见的报错类型:

NAMEERROR 名字错误

SynataxERROR  语法错误

KeyERROR  键不存在

ValueError  值错误

IndexError  索引错误

如何避免:

异常处理:

在你认为可能会出现bug的代码块上方try一下,注意try内部的代码块要越少越好。

try:#可能出现错误的代码块

pass

except 出错的类型 as e: #将报错的信息赋值给变量e

pass

#出错之后的处理机制

UDP通信:数据报协议(自带报头), 没有双向通道,通信类似于发短信

1、udp协议客户端允许发空

2、udp协议不会粘包

3、udp协议服务端不存在的情况下,客户端照样不会报错

4、udp协议支持并发

并发:看起来像是同时运行

并行:真正意义上的同时运行

socketserver:

UDP的服务端:

importsocketserverclassMyServer(socketserver.BaseRequestHandler):defhandle(self):#print('来啦 老弟')

whileTrue:

data,sock=self.requestprint(self.client_address) #客户端地址

print(data.decode('utf-8'))

sock.sendto(data.upper(),self.client_address)if __name__ == '__main__':"""只要有客户端连接 会自动交给自定义类中的handle方法去处理"""server= socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyServer) #创建一个基于TCP的对象

server.serve_forever() #启动该服务对象

UDP的客户端:

importsocketimporttime

client= socket.socket(type=socket.SOCK_DGRAM)

server_address= ('127.0.0.1',8080)whileTrue:

client.sendto(b'hello',server_address)

data,addr= client.recvfrom(1024)print(data.decode('utf-8'),addr)

time.sleep(1)

TCP的服务端:

importsocketserverclassMyServer(socketserver.BaseRequestHandler):defhandle(self):#print('来啦 老弟')

whileTrue:

data= self.request.recv(1024)print(self.client_address) #客户端地址

print(data.decode('utf-8'))

self.request.send(data.upper())if __name__ == '__main__':"""只要有客户端连接 会自动交给自定义类中的handle方法去处理"""server= socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer) #创建一个基于TCP的对象

server.serve_forever() #启动该服务对象

TCP的服务端:

importsocket

client=socket.socket()

client.connect(('127.0.0.1',8080))whileTrue:

client.send(b'hello')

data= client.recv(1024)print(data.decode('utf-8'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值