服务器
socket又叫套接字,指的是 实现网络通信的两端。分为服务器对应的套接字和客户端对应的套接字。
1.python通过提供socket标准库来支持socket编程。socket编程就是用程序实现服务器和客户端
1.创建服务器对应的套接字对象
socket(family,type) family: 设置ip类型 AF_INET(ipv4) --默认值 type: 设置传输类型 SOCK_STREAM(TCP可靠传输)--- 默认值
server = socket.socket() # 创建一个基于ipv4的可靠传输的服务器套接字
2.绑定ip和端口
server.bind((ip,端口))
bind(ip,端口) ip:服务器的地址 端口: 不同端口用来区分电脑上不同的服务。取值范围是0—65535,0-1024表示著名端口(用来 绑定特殊服务的端口
3.监听请求
listen(个数) --- 需要通过数字设置服务器一次可以处理最大的请求个数
server.listen(520)
4.让服务器一直处于启动状态
while True:
5.接收客户端的请求
执行到accept(),程序会停下来,直到有客户端在请求服务器的时候才会往下执行,
返回会话和客户端地址
converstation,addr =server.accept()
6.服务器给客户端发送数据
send(data) --- 发送数据 data: 需要发送的数据,要求是二进制(bytes) a.str 转 bytes(字符串转换成二进制) 方法 1: bytes(字符串,encoding= ‘utf-8’) 方法2: 字符串.encode(编码方式)
converstation.send(data(二进制形式))
7.接收客户端发送的消息
` recv(字节数) ---- 接收从客户端发来的消息 ,参数是用来设置 一次能接收的最大字节数,返回值是接收到的数据(二进制)
bytes 转 str
方法1:str()
方法2:二进制.decode(‘utf-8’)
注意: recv方法也阻塞线程,程序运行到这里会停下来等,等到对方发送消息为止`
data = converstation.recv(1024)
# re_message = str(data,encoding='utf-8')
re_message = data.decode('ute-8')
print(re_message)
客户端
1.创建客户端套接对象
client = socket.socket()
2.链接服务器
client.connect((服务器地址,端口))
3.给服务器发送消息
while True:
message = input('客户端:')
client.send(message.encode('utf-8'))
4.接收服务器返回的数据
re_data = client.recv(1024)
print(re_data.decode('utf-8'))
requests请求
1.python中没有网络请求,需要一个第三方库requests
import requests
requests.get(url, params) --> 返回服务的响应
url -> 请求地址
params -> 客户端给服务发送的数据(字典) {参数名:值}
# https://www.apiopen.top/satinApi?type=1&page=1
url = 'https://www.apiopen.top/satinApi?type=1&page=1'
response = requests.get(url,{'type':1,'page':1})
# 1.获取响应头
print(response.headers)
#2.拿二进制形式的响应体
data_bytes= response.content
print(data_bytes)
# 3.拿字符串形式的响应体
data_str = response.text
print(data_str)
# 4.拿json格式对应的数据
data_json = response.json()
print(data_json)