2022-05-07 09:12:00 by wst
web开发学过的知识要时常总结下,这样才能变成自己的知识。
TCP协议是建立在IP协议之上的,TCP协议负责在两台计算机之间建立可靠链接,保证数据包按顺序到达。TCP协议会通过三次握手建立可靠链接。
import socket # 导入socket模块
host = '127.0.0.1' # 主机IP
port = 8080 # 端口号
web = socket.socket() # 创建socket对象
web.bind((host, port)) # 绑定端口
web.listen(5) # 设置最多连接数
print("等待客户端链接。。。")
while True:
conn, addr = web.accept() # 建立客户端链接
data = conn.recv(1024) # 获取客户端请求数据
print(data) # 打印接收到的数据
conn.sendall(b'HTTP/1.1 200 OK\r\n\r\nHello World') # 向客户端发送数据
conn.close() # 关闭链接
代码逻辑:使用socket模块,客户端浏览器向本地服务器发起请求,服务器接到请求,向浏览器发送“Hello World”。
验证:打开浏览器,输入网址:127.0.0.1:8080,成功链接后显示“Hello World”
import socket
s = socket.socket()
host = '127.0.0.1'
port = 8080
s.connect((host, port))
send_data = input("请输入要发送的数据:")
s.send(send_data.encode())
recvData = s.recv(1024).decode()
print('接收到的数据为:', recvData)
s.close()
验证:打开一个命令行窗口,运行服务端的程序;然后再打开一个命令行窗口,运行客户端程序,并输入nihao, 然后就能收到返回的“Hello World”
UDP协议是面向无链接的协议,使用UDP协议时,不需要建立链接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,无法保证数据一定到达。
逻辑:在客户端输入要转换的摄制温度,然后发送给服务器,服务器根据转化公式,将摄氏温度转换为华氏温度,发送给客户端显示。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('127.0.0.1', 8888))
print("绑定udp到8888端口")
data, addr = s.recvfrom(1024)
data = float(data)*1.8 + 32
send_data = '转换后的温度(单位:华氏温度):' + str(data)
print('Received from %s:%s.' % addr)
s.sendto(send_data.encode(), addr)
s.close()
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = input('请输入要转换的温度(单位:摄氏度):')
s.sendto(data.encode(), ('127.0.0.1', 8888))
print(s.recv(1024).decode())
s.close()
总结:socket编辑是网络编程的基础,值得好好学学。