Python网络编程二

TCP协议一旦链接就会一直占用,直到结束
server 与client连接建立了长连接,client2可以连但是处于等待
在连接accept()上方加一个循环

上一节是TCP
UDP网络编程
udp的server不需要监听和建立连接
启动服务器后只能被动等待客户端发消息
客户端发消息同同时,自带地址信息
消息回复时,需要把地址填上

#server.py
import socket
sk = socket.socket(type=socket.SOCK_DGRAM) #datagram 数据报文的意思
sk.bind(('127.0.0.1',8080))

msg , addr = sk.recvfrom(1024)
print(msg.decode('utf-8'))
sk.sendto(b'bye',addr`-)

sk.close()
#client.py
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
ip_port = ('127.0.0.1'.8080)
sk.sendto(b'hello',ip_port)
ret,addr = sk.recvfrom(1024)
print(ret.decode('utf-8'))
sk.close()

同时接收多个人的信息,短连接

UDP不会出现黏包问题,但是会丢包
TCP会黏包,不丢包
黏包第一次没发完,下一次发的时候继续上次没发完的内容
tcp是基于数据流的,因此收发消息不能为空。需要添加空消息处理机制,防止程序卡住。数据不会丢,数据可靠,但是会黏包

解决黏包问题
本质是不知道要接收数据的大小
首先,发送数据的大小,然后按照数据长度接收数据
struct模块解决
该模块可以把一个类型,如数字转换成 固定长度的bytes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值