UDP 协议
#客户端代码 import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP 不需要建立链接 # 发送数据时 要指定接受方地址 client.sendto("hello".encode("utf-8"),("127.0.0.1",1688)) data,addr = client.recvfrom(1024) print("收到来自%s的消息 : %s" % (addr,data)) client.close()
#服务器代码
from socket import *
# 创建基于UDP的scoket 必须手动指定
server = socket(AF_INET,SOCK_DGRAM)
server.bind(("127.0.0.1",1688))
while True:
data,addr = server.recvfrom(1024)
print("收到来自%s的消息 : %s" % (addr,data))
server.sendto(data.upper(),addr)
udp 在传输大数据上非常吃力,
#客户端代码 from socket import * client = socket(AF_INET,SOCK_DGRAM) data = b"" for i in range(1024 * 60): data += b"1" client.sendto(data,("127.0.0.1",1688)) #服务器代码 from socket import * server = socket(AF_INET,SOCK_DGRAM) server.bind(("127.0.0.1",1688)) while True: data,addr = server.recvfrom(1024*1024) print(data)
udp 与TCP 之间的区别
与TCP的区别 *****
udp是不可靠传输,不需要建立连接,不会粘包,单次数据包不能太大。
代码 :
服务器端:服务器不需要监听 listen,不需要接收请求 accept,收数据 recvfrom(缓冲区大小),发数据 sendto(数据,地址)
客户端: 不需要建立连接,收数据 recvfrom(缓冲区大小),发数据 sendto(数据,地址)
DNS服务器了解
DNS Domain Name System 全称 :域名解析服务器
DNS 是将 域名转换为IP地址 要连接服务器 一定的知道IP
因为IP不方便记忆,所以我们吧ip和一个域名绑定到一起 域名一串有规律的字符串 如:www.baidu.com
DNS 是CS结构的server端
DNS 使用的是UDP 协议 因为 传输的数据小 但对速度要求高 一个DNS要服务很多计算机
http:// news.cctv.com /2019/05/29/ARTIXRqlqFBp59eECweiXTUU190529.shtml
协议名称 域名 文件路径
DNS 本质就是一个数据库 里面就存储 域名和ip的对应关系
news.cctv.com
.com 顶级域名
cctv 二级域名
news 三级域名