美文网首页
2018-10-24网络通信总结

2018-10-24网络通信总结

作者: _墨宇_ | 来源:发表于2018-10-24 20:42 被阅读0次

    服务器

    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)
    

    相关文章

      网友评论

          本文标题:2018-10-24网络通信总结

          本文链接:https://www.haomeiwen.com/subject/sloxtqtx.html