2018-10-24day19网络基础和网络编程基础

2018-10-24  本文已影响0人  MW演员

span(), group(), string(),start(),end()

查找相关

切割相关

一、网络基础

1、osi参考模型(7层):国际化标准组织分析计算机通信,把计算机通信进行的规范和标准化分成7层
2、tcp/ip协议
3、tcp可靠传输
4、udp不可靠传输
二、socket套接字
1、什么是套接字
2、socket编程
服务器程序
import socket
# i.创建服务器对应的套接字对象
# socket(faimliy,type)
# faimliy: 设置ip类型(AF_INET默认为Ipv4,AF_INET6(ipv6))
# type:# 设置传输类型(SOCK_STREAM默认值(TCP协议可靠传输),SOCK_STREAM=2(UDP不可靠传输))

server = socket.socket()  # 创建一个基于ipv4的可靠传输的服务器套接字

# 2.绑带ip地址和端口
# bind((ip, 端口)) :参数时元祖(ip,端口)
# ip:服务器的地址(字符串)
# 端口:不同的端口用来区分不同的服务(端口就是应用程序的唯一标识),取值范围(0-65535),注意0-1024属于著名端口
server.bind(('10.7.156.141', 8080))

# 3、监听请求
# listen(个数) : 通过数字设置服务一次可以处理多少个请求个数
server.listen(512)
print('开始监听')

# 4、让服务器一直处于循环状态

while True:
    # 5、接受请求
    # accept() 接受请求执行到accpet程序会停下来(阻塞线程),如果有客户端在请求这个服务器时才会往下执行。返回会哈和客户端的地址
    conversion, addr = server.accept()
    print(addr)
    # 6、服务器给客户端发送数据
    # send(data) 发送数据
    # data:需要发送的数据,要求是二进制数据(bytes)
    # str转二进制bytes
    # 方法一:
    # 语法:bytes(内容)
    # 方法二:
    # 字符串.encode(编码方式)
    message = input('>>>>')
    message_data = bytes(message, encoding='utf-8') # 类型转换
    conversion.send(message_data)

    # 7、接受客户端发送的消息
    # recv(字节数) 接受客户端发送的数据,参数是用来设置一次能就收的最大字节数
    # 注意:recv方法也会阻塞线程,也就是说程序运行到这里会停下来,等到对方发送消息为止
    # 返回接收到的数据(接收到二进制数据)
    # 如果接收到字符串(需要将二进制转换成字符串)
    # str(二进制, encoding='utf-8')
    # 二进制.decode(编码方式)
    data = conversion.recv(1024)
    # re_message = str(data, encoding='utf-8')
    re_message = data.decode('utf-8')
    print(re_message)

三、socket客户端

# 客户端
import socket
# 1、创建套接字对象
client = socket.socket()

# 2.连接服务器
# connect((地址,端口))
client.connect(('10.7.156.97', 8080))

while True:
    # 4、给服务器发送消息
    message =  input('>>>')
    client.send(message.encode('utf-8'))

    # 3、接受服务器返回的服务器
    re_data = client.recv(1024)
    print('他说:', re_data.decode('utf-8'))

    if re_data == '拜拜':
        break
# 服务器
import socket

# 1、创建服务器
server = socket.socket()

server.bind(('10.7.156.141', 8080))

server.listen(100)

while True:
    # 接受请求
    conversation, addr = server.accept()
    print(conversation)
    # 用于保持回话
    while True:
        message_re = conversation.recv(1024).decode('utf-8')
        print(('他说(%s):%s'%(addr[0][-2:], message_re)))

        # 发送消息
        message = input('>>>>')
        conversation.send(message.encode('utf-8'))

        if message == '拜拜':
            break

五、HTTP和HTTPS

2、常见协议
3、HTTP协议
4、HTTP特点
5、HTTP通讯过程

6、常见的状态码

状态码 含义
200 请求成功
400 客户端请求语法错误,服务器不发解析
404 NotFound 服务器无法根据客户端的请求找到资源
500 服务器内部错误,无法完成请求

六、学习request

import requests
# get(url, params)
# url:请求地址
# paams: 客户端给服务器发送数据(字典){参数名:值}
url = 'https://www.apiopen.top/satinApi'
# https://www.apiopen.top/satinApi?type=1&page=1
response = requests.get(url, {'type':1, 'page':1})
# 1.获取响应头
# print(response.headers)

# 2、获取响应体
# 方式1:(二进制形式的响应体)
data_bytes = response.content
# print(data_bytes)

# 方式2:(字符串形式)
data_text = response.text
print(data_text)

# 方式3:(json格式对应的python数据)
data_json = response.json()
# print(data_json)
上一篇 下一篇

猜你喜欢

热点阅读