网络编程之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三次握手,四次挥手只是为了知识点完整
会在网络通信过程那里讲