TCP协议:
代码
特点:
可靠
全双工
缺点:
效率低:
建立连接:
三次握手:
流程图
为什么使用tcp协议:
四次挥手:
流程图:
sever服务端
import socket
#创建一个socket对象
sk = socket.socket()#建立一个手机
sk.bind(("127.0.0.1",9000))#插上个电话卡
sk.listen()
conn,addr =sk.accept()
msg = conn.recv(1024)#建立连接 等待阻塞
print(msg.decode("utf-8"))
conn.send("你好".encode("utf-8"))#对服务段要说的话是
conn.close()#结束对话
sk.close()#关闭
起web服务 永远先启动服务端
sever端 服务端
端口被占的原因:
bind 已经向操作系统申请了一个9000的端口
如果9000没有被占用,name就批准给你使用
直到sk.close的时候这个端口才归还给操作系统
程序结束但是忘记close关闭
那么操作系统就不能及时发现这个端口已经被归还
当你重启程序再次申请使用9000端口的时候
操作系统告诉你这个端口被占用
流程图:
UDP协议:
代码:
import socket
#创建一个搜查客人整个socket
sk = socket.socket() #建立一个手机
sk.connect(("127.0.0.1",9000))#插上手机卡
sk.send("早".encode('utf-8'))
ret = sk.recv(1024)#建立连接 阻断等待传输
print(ret.decode("utf-8"))
sk.close()
client 客户端 后启动
解释图