socket TCP DPT 网络编程
复习:
ARP协议:
广播和单播
通过ip地址获得mac地址
机器A发起一个arp请求(只包含A的ip地址)
交换机接收到请求,广播这条消息
所有的机器都会接受到这条请求,只有需要寻找的机器B的ip地址才能吻合
并回应交换机的广播(并带上自己的mac地址)
交换机通过单播的形式回复B的mac地址,并发送给A
TCP协议:
面向连接 可靠 全双工
三次握手:建立tcp连接
发数据
四次挥手:断开tcp连接
UDP协议:
无连接 不可靠 速度快
回环ip:
127.0.0.1
0.0.0.0
内容总览:
BS架构
CS架构
socket
BS架构:
brower 与 server
浏览器与服务器
例如:
server brower
博客园,百度,探宝,京东 360浏览器
CS架构:
client 和 server
用户与服务器
也就是说,客户需要安装一个客户端,然后才能与服务器取得联系
例如:
腾讯 qq应用
百度网盘服务器 百度云应用
总结:
BS架构也是CS架构的一种
pc端:
BS架构(浏览器与服务器架构)是一种趋势,统一了程序的入口
手机端:
微信公众号
小程序 都统一了程序的入口
sockst:
中文名字:套接字
这个模块主要是解决了传输层与应用层的链接,分为TCP UDP两种编程模式
TCP:
#server
import socket sk = socket.socket()#买手机 sk.bind(('127.0.0.1',9000))#插手机卡 sk.listen(5)#开机 5代表最大排队等待人数 while True: try: conn,addr = sk.accept()#等电话 print(conn,addr)#等到了电话 之后的所有信息收发都建立在conn这个连接上 while True: msg_send=input('>>>') conn.send(msg_send.encode('utf-8')) msg_rec = conn.recv(1024)#这里一定要传入参数,限制最大传入的字节 print(msg_rec.decode('utf-8')) except UnicodeEncodeError: pass sk.close()#关机
#client
import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) while True: msg_rec = sk.recv(1024) print(msg_rec.decode('utf-8')) msg = input('>>>') sk.send(msg.encode('utf-8')) sk.close()
UDP协议:
server端:
import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',9000)) while True: msg,addr = sk.recvfrom(1024) print(msg.decode('utf-8')) if msg == b'q': break msg_send = input('>>>') sk.sendto(msg_send.encode('utf-8'),addr) if msg_send == 'q':break sk.close()
client端:
import socket sk = socket.socket(type=socket.SOCK_DGRAM) while True: msg_send = input('>>>') sk.sendto(msg_send.encode('utf-8'),('127.0.0.1',9000)) if msg_send == 'q':break msg_recv,addr = sk.recvfrom(1024) if msg_recv == b'q':break print(msg_recv.decode('utf-8')) sk.close()