网络编程之TCP编程
TCP
tcp介绍(传输控制协议)
udp写信:
放进去就回发送走
收信人的地址
写信不安全
别人也会收到
飞秋可能收不到
tcp:
打电话
tcp有补救措施
保证数据一定会到
电流导致数据乱了
打电话要拨号,嘟嘟嘟的过程
必须先建立链接
tcp有应答机制
-
一段时间内没有应答,超时重传
-
迅雷下载的上传速度就是应答
-
错误校验
-
流量控制,阻塞管理
不能传太多
UDP 飞鸽传书
保证稳定
udp流程
建立套接字
sento
recvfrom
bind端口
TCP流程
严格区分客户端和服务器
选区:选择服务器,越近越不卡
提供服务的就是服务器
客户端:ipad点菜机
多了链接服务器
铁了心要用括号就要转义
大写的o前面插入,小写的o插入到下面
自己写的名字和import一样
tcp说多少句都是一个连接
客户端和服务器
udp 用户数据报协议
TCP 服务器
客户端一般不绑定端口
listen被动套接字
accept等待客户端链接
流程:
买个手机--套接字
插上手机卡--套接字绑定
接听状态--listen(设置为正常接听状态)--买手机卡默认你打电话给别人
等待别人打电话--accept
括号就是反斜杠
大O前面插一行
小o前面插一行
大A行末 大I行首
bind一定是绑定元组
listen写128就可以了
拆包
等号右边是一个元组,等号左边有两个变量,这个叫做拆包
accept接受新的套接字(客服),addr是别人给你打电话的信息(打电话给你的电话号码之类的)
bind 电话机申请了7890
人->联通打电话
人工---找个人给他服务,accept,打电话,客服(由电话主机给他传了客户的信息)给他服务
服务器:
先买了电话机
先变成listen--等待别人给你打电话
找了个新的套接字为他服务
--
又来了一个人
又找个客服
监听套接字只等待
下面负责通信
--
一直阻塞,直到有客户来(accept)来的时候才解阻塞
客户端先发
linux命令行创建新窗口
总结命令行‘
客户端先运行还是服务器先运行
accept卡在这里不走了
卡着不走等客户端
accept等一个客户端调用connect
循环为多个客户端服务
先拿号
把标记的客户端关了
recvfrom有数据还有,ip之类的 面积你
recv只有数据
你怎么知道客户端只需要服务一次,就是循环为这个客户多次服务
你怎么知道别人不需要服务
recv解堵塞,有两种方式
,一种是
客户端发送数据
客户端调用close
9.55打电话,亮名牌,挂了我就投诉你
同一时刻为多个服务
文件下载器
什么叫下载
服务器down一个东西
收到一点我就写一点
客户端比较简单
服务器比较麻烦
要下载东西,需要有什么前提
1.有网络---创建套接字
2.connect
3.下载文件名
4.读出来那个文件再发给我
最简单的下载流程
1.限速,验证,超级管理员,vip会员
with怎么用
打开成功,读写异常
try:
xxx
except:
xxx
with open("xxx") as f
里面不需要写close
保证百分之百被close关了
先发请求,给文件名
收
新建一个文件
把东西放到文件里面去
流程:
1024==1字节
1024*1024=1mb
写上个b是二进制
recv是二进制
2-to-too
d剪切
p粘贴放进去
开多一个函数有独立功能
with 打得开,读数据不一定用
新建一个文件不可能失败
try的用法
如果下载的东西没有的话怎么办
vim xxx+09
上课都不认真听,下课就会认真了?
listen里面的参数(四个小时连续上)
tcp稳定 udp不稳定
同一时刻有多少客户端连接你有关系(一丁点关系)
128 Ubuntu特别适合做服务器
高并发好几百万个人
tcp注意点
- tcp服务器一般情况下需要绑定,否则客户端找不到这个服务器。
- 网络安全可能会有其他不是tcp或者udp
- 参数不管它,以后查一查就好了
- 收数据要绑定端口,发数据不绑定也行,给我打电话来电显示就行了
- qq多开,udp,硬件限制所以是udp
- 一起为大家服务,两台电脑服务。慢慢的都给另一台电脑
- 在一个网络里面,知道ip和端口
- 在互联网里面可以不用绑定。
- 第一步,先登录。我知道腾讯服务器的端口。连接腾讯的服务器
- 第二步,qq2登陆,腾讯服务器起到了一个转发的服务
- 多开qq,有不同的端口
注意点
- listen,可以把主动变为被动
- udp不需要connect连接。tcp是面向连接的通信,电话的模型,udp是写信的模型
- accept返回到是一个套接字和地址
- 服务器没有接到请求的时候会卡在accept那个时候
- listen关闭了之后,不能接受新的客户端
- 关闭了accept的新套接字意味着客户端已经服务完毕
- 服务器会解阻塞
- 收到了消息
- 对方挂了电话,判断长度是否为0
tcp三次握手,四次挥手只是为了知识点完整
会在网络通信过程那里讲