交换机与路由器的区别 协议编码
1、交换机与路由器的区别
交换机的主要功能:是组织局域网,经过交换机内部处理解析信息之后,将信息以点对点、点对多的形式发送给固定端。
路由器的主要功能:是进行跨网段数据传输,路由选择最佳路径。
ex:如果你需要将多个电脑连接到一根网线上,用交换机即可。
如果你只有一个外网IP,但是你有好多台电脑需要上网,用路由器即可。
2、tcp协议及编码
回环地址:127.0.0.1 只能被本机识别,不会被其它机器识别。
TCP三次握手:一定是client先发起请求。
a、客户端发起请求连接服务器的请求。
b、服务器返回:确认接收到连接请求,并要求连接客户端。
c、客户端:确认连接请求。
四次挥手:谁先发起断开连接的请求都可以。
a、客户端:发起断开连接的请求。(如果有数据需要发送,可以接收)
b、服务器回复:确认收到请求了。
c、服务器发送:可以断开连接
d、客户端回复:确认收到信息,断开连接。
3、udp协议及编码
type = SOCK_DGRAM
udp协议的通信优势:
允许一个服务器同时和多个客户端通信。
TCP不行
1 # UDP-client
2 import socket
3 sk = socket.socket()
4 while 1:
5 msg_s = input(">>>")
6 sk.sendto(msg_s.encode("utf-8"),("192.168.12.49",8080))
7 if msg_s.upper() == "Q":
8 break
9 msg_r,addr = sk.recvfrom(1024)
10 print(msg_r.decode("utf-8"))
11 if msg_r.decode("utf-8") == "Q":
12 break
13 sk.close()
14
1 # UDP-server
2 import socket
3 sk = socket.socket(type=socket.SOCK_DGRAM)
4 sk.bind(("192.168.12.49", 8080))
5 while 1:
6 msg_s,addr = sk.recvfrom(1024)
7 print(msg_s.decode("utf-8"),addr)
8 if msg_s.decode("utf-8").upper() == "Q":
9 break
10
11 msg_r = input(">>>")
12 sk.sendto(msg_r.encode("utf-8"), addr)
13 if msg_r.upper() == "Q":
14 break
15 sk.close()
3、pycharm输出带颜色字体
\033[字体颜色;背景颜色m 字符串 \033[0m
\033[32;44m 中国 \033[0m
4、实现一个省去写编码解码的类,这个类继承socket
1 import socket
2
3 class Mysocket(socket.socket): # 这里实例化的时候不需要传参数
4 def __init__(self,encoding="utf-8"): # 默认是utf-8
5 self.encoding = encoding
6 supper().__init__(type=socket.SOCK_DGRAM)# 默认是UDP模式
7
8 def mysendto(self,msg,addr):
9 return self.sendto(msg.encode(self.encoding),addr)
10
11 def myrecvfrom(self,num):
12 msg,addr = self.recvfrom(num)
13 return msg.decode(self.encoding),addr
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步