python标准库 对socket二次封装_python--(socket与粘包解决方案)

本文介绍了Python中socket的基本使用,包括TCP和UDP的socket通信,并探讨了socket中的粘包问题及其解决方案,如发送消息长度作为前缀,以及利用struct进行数据打包和解包。此外,还提供了文件传输的案例,展示了如何处理大于10M的大文件上传。
摘要由CSDN通过智能技术生成

python--(socket与粘包解决方案)

一.socket:

Socket 是任何一种计算机网络通讯中最基础的内容。例如当你在浏览器地址栏中输入 http://www.cnblogs.com/ 时,你会打开一个套接字,然后连接到 http://www.cnblogs.com/ 并读取响应的页面然后然后显示出来。而其他一些聊天客户端如 gtalk 和 skype 也是类似。任何网络通讯都是通过 Socket 来完成的

打开 => 读写 => 关闭

socket ftp传输:

ContractedBlock.gif

ExpandedBlockStart.gif

importsocket

server= socket.socket() #创建一个手机#创建了一个socket对象

ip_port = ('192.168.15.113',8001) #创建了一张电话卡

server.bind(ip_port) #插上电话卡#绑定IP地址和端口

server.listen()#开机#监听IP地址和端口

conn, addr = server.accept() #等着别人给我打电话,阻塞住#等待客链接

from_client_msg = conn.recv(1024) #接收消息#1024为消息大小,单位B,MB = 1024KB,1KB = 1024B

from_client_msg = from_client_msg.decode('utf-8')#接收的消息是bytes类型,需要转换为字符串

print(from_client_msg)

conn.send('死鬼,十点'.encode('utf-8')) #发送消息

conn.close()#关闭链接

server.close()

socket ftp传输,服务端

ContractedBlock.gif

ExpandedBlockStart.gif

importsocket

client=socket.socket()

server_ip_port= ('192.168.15.113',8001)

client.connect(server_ip_port)#链接服务端

client.send('约吗'.encode('utf-8')) #发消息#send里面的消息必须是字节类型的

from_server_msg= client.recv(1024) #阻塞住,等待接收消息

from_server_msg = from_server_msg.decode('utf-8')print(from_server_msg)

client.close()

socket ftp传输,客户端

socket udp传输:

ContractedBlock.gif

ExpandedBlockStart.gif

importsocket

udp_server= socket.socket(type=socket.SOCK_DGRAM) #创建一个udp协议下的socket,需要使用参数type#DGRAM : datagram 数据报

ip_port = ('192.168.15.113',8001)#拿到一个地址,启动程序的时候,告诉电脑,你给我这个程序分配8001端口.

udp_server.bind(ip_port) #绑定IP地址和端口

from_client_msg,client_addr= udp_server.recvfrom(1024)#阻塞住了,接收客户端消息#from_client_msg来自客户端的消息,client_addr客户端的地址('192.168.15.113', 8001)

udp_server.sendto(b'gunduzi',client_addr)#发送消息

udp_server.close()#关闭udp的socket对象

socket udp传输,服务端

ContractedBlock.gif

ExpandedBlockStart.gif

importsocket

udp_client= socket.socket(type=socket.SOCK_DGRAM)

server_ip_port= ('192.168.15.11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值