io操作-网络
Posted chenlulu1122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了io操作-网络相关的知识,希望对你有一定的参考价值。
网络模型
7层模型:
应用层 提供具体功能
表示层 压缩优化加密数据
回话层 选择传输服务
传输层 提供传输服务
网络层 路由选择,网络互联
链路层 数据转换,发送
物理层 提供硬件实体设备
tcp/ip 四层模型
应用
传输
网络
物理
ifconfig 查看ip地址
###传输服务
tcp 文件/网页/邮件
面向连接的传输服务
可靠,数据无丢失/错乱/重复
先连接,发送数据,断开连接
三次握手:
主动方发报文请求建立连接
被动方收到报文后,回报文允许连接
主动方收到报文后,再次发报文建立连接
四次挥手:
主动方发送报文请求断开
被动方收到信息后,回报文准备断开
被动方回报文,可以断开
主动方回报文断开连接
udp 视频聊天,群聊,广播
面向无连接的传输服务
不可靠,数据丢失
tcp socket
服务端:
from socket import *
s = socket()
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, True)#断开立刻重新使用
s.bind((‘0.0.0.0‘, 8888))#bind()里面是ip port 组成的元组ip 字符串类型 port 整型
s.listen(5)
c, addr = s.accept()
data = c.recv(1024)
c.send(data) #接收发送消息都是字节串:字节/字符转换str - encode() - tybes - decode() - str
c.close()
s.close()
客户端:
from socket import *
s = socket()
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, True)
s.connect((‘127.0.0.1‘,8888))
s.send(b‘ok‘)
s.recv(1024)
s.close()
udp socket
服务端:
from socket import *
s = socket(family=AF_INET, type=SOCK_DGRAM)
s.bind((‘127.0.0.1‘, 8888))
data, addr = s.recvfrom(1024)
s.sendto(data, addr)
s.close()
客户端:
s = socket(family=AF_INET, type=SOCK_DGRAM)
addr=(‘127.0.0.1‘, 8888)=
s.sendto(b‘ok‘, addr)
data, addr = s.recvfrom(1024)
s.close()
###tcp和udp区别
服务端和客户端的发送/接收配合使用
tcp字节流传输,发送速度大于接收速度,粘包
以上是关于io操作-网络的主要内容,如果未能解决你的问题,请参考以下文章