1、为什么要使用通讯协议
2、TCPIP协议
cmd窗口,命令执行:ipconfig/all
称它为物理地址:主要是硬件与网卡相关的,物理地址不能改变的
3、UDP协议
4、Socket简介
5、创建TCP服务器
示例,具体代码实现
# -*- coding:utf-8 -*-
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() #关闭连接
步骤操作:
首先,打开百度首页–>检查—>Network—>F5
出现这个界面
启动程序,控制台打印的信息
接着,我们就把它当作是一个客户端,我们可以使用浏览器访问:127.0.0.1:8080
当然也可以检查元素
5、创建TCP客务器
示例,具体代码实现:
# -*- coding:utf-8 -*-
import socket # 导入socket模块
s= socket.socket() # 创建TCP/IP套接字
host = '127.0.0.1' # 获取主机地址
port = 8080 # 设置端口号
s.connect((host,port)) # 主动初始化TCP服务器连接
send_data = input("请输入要发送的数据:") # 提示用户输入数据
s.send(send_data.encode()) # 发送TCP数据
# 接收对方发送过来的数据,最大接收1024个字节
recvData = s.recv(1024).decode()
print('接收到的数据为:',recvData)
# 关闭套接字
s.close()
我们需要运行两个程序:先服务端,然后客户端
启动程序,控制台打印的信息
由,可获得数据:
6、执行TCP服务端和客服端
示例,具体代码实现:
服务端
Server.py
import socket # 导入socket模块
host = socket.gethostname() # 获取主机地址
port = 12345 # 设置端口号
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建TCP/IP套接字
s.bind((host,port)) # 绑定地址(host,port)到套接字
s.listen(1) # 设置最多连接数量
sock,addr = s.accept() # 被动接受TCP客户端连接
print('连接已经建立')
info = sock.recv(1024).decode() # 接收客户端数据
while info != 'byebye': # 判断是否退出
if info :
print('接收到的内容:'+info)
send_data = input('输入发送内容:') # 发送消息
sock.send(send_data.encode()) # 发送TCP数据
if send_data =='byebye': # 如果发送byebye,则退出
break
info = sock.recv(1024).decode() # 接收客户端数据
sock.close() # 关闭客户端套接字
s.close() # 关闭服务器套接字
客服端
Client.py
import socket # 导入socket模块
s= socket.socket() # 创建TCP/IP套接字
host = socket.gethostname() # 获取主机地址
port = 12345 # 设置端口号
s.connect((host,port)) # 主动初始化TCP服务器连接
print('已连接')
info = ''
while info != 'byebye': # 判断是否退出
send_data=input('输入发送内容:') # 输入内容
s.send(send_data.encode()) # 发送TCP数据
if send_data =='byebye': # 判断是否退出
break
info = s.recv(1024).decode() # 接收服务器数据
print('接收到的内容:'+info)
s.close() # 关闭套接字
注意:先运行服务端,再运行客户端
启动程序,控制台打印的信息:
服务端打印的信息:
客服端打印的信息:
客户端发送信息,服务端就可以接收到:
7、创建UDP服务器、客户端
服务器
示例,具体代码实现:
服务端:
udp_server.py
import socket #导入Socket模块
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #创建UDP套接字
s.bind(('127.0.0.1', 8888)) # 绑定地址(host,port)到套接字
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()
示例,具体代码实现:
客户端:
udp_client.py
import socket # 导入Socket模块
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP套接字
data = input('请输入要转换的温度(单位:设置度):') # 输入要转化的温度
s.sendto(data.encode(), ('127.0.0.1', 8888)) # 发送数据
print(s.recv(1024).decode()) # 打印接收数据:
s.close()
注意:先运行服务端,再运行客户端
启动程序,控制台打印的信息:
服务端:
客户端:
我们在客户端与服务端输出数据,如下:
客户端: