zoukankan      html  css  js  c++  java
  • python笔记28(TCP,UDP,socket协议)

    今日内容

    1、TCP协议

    协议的特点:三次握手,四次挥手;

    2、UDP协议

    3、OSI七层模型:每层的物理设备,每一层协议。

    4、代码部分:

    ①介绍socket;

    ②使用socket完成tcp协议的web通信;

    ③使用socket完成udp协议的web通信。

    1、TCP协议

    1、可靠,慢,全双工通信
    2、建立连接的时候,三次握手
    3、断开连接的时候,四次挥手
    4、在建立起连接后
    发送的每条信息都有回执
    为了保证数据的完整性,还有重传机制
    5、长连接:会一直占用双方的端口
    6、I/O操作(input,output),输入输出相对内存来说的。
        write,send:输出 output
        read,recv:输入input
     能够传输的数据没有限制
    

    2、UDP协议

    1、无连接的,速度快
    2、可能会丢消息
    能够传输的数据长度有限的,是根据数据传输设备设置有关(MTU)
    应用场景:
    TCP:文件的上传,下载(邮件,网盘,缓存电影)
    UDP:即时通信(QQ,微信)
    

    3、OSI7层模型

    应用层 :http,https,ftp,smtp
    表示层
    会话层
    #应用层(开发角度,五层协议)--》代码
    传输层,tcp,udp
    网络层,ipv4,ipv6 (路由器)
    数据链路层,mac,arp(网卡,交换机)
    物理层
    

    4、抽象层

    socket  中文名:套接字
    python socket模块 完成socket的功能
    工作在应用层和传输层 之间的抽象层
    	帮助我们完成了所有信息的组织和拼接
    socket对于程序员来说,已经是网络操作的底层了。
    socket历史
    	同一台机器上的两个服务之间的通信
    		基于文件
    	基于网络的多态机器之间的多个服务通信
    TCP协议:
    ###########
    server端:
    
    import socket
    sk=socket.socket()
    sk.bind(('127.0.0.1',9000))
    sk.listen()
    print('*'*20)
    conn,addr=sk.accept()
    while True:
        msg=conn.recv(1024).decode('utf-8')
        if msg.upper()=='Q':break
        print(msg)
        ipn=input(">>>")
        conn.send(ipn.encode('utf-8'))
        if ipn.upper()=='Q':break
    conn.close()
    sk.close()
    
    ################
    client端:
    import socket
    
    sk=socket.socket()
    sk.connect(('127.0.0.1',9000))
    while True:
        ipn=input(">>>")
        sk.send(ipn.encode('utf-8'))
        if ipn.upper()=='Q':break
        msg=sk.recv(1024).decode('utf-8')
        if msg.upper() == 'Q': break
        print(msg)
    sk.close()
    ========================
    UDP协议:
    server:
    
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',9000))
    while True:
        msg,client_addr=sk.recvfrom(1024)
        print(msg.decode('utf-8'))
        msg=input(">>>").encode('utf-8')
        sk.sendto(msg,client_addr)
    sk.close()
    
    client:
        
    import socket
    sk=socket.socket(type=socket.SOCK_DGRAM)
    while True:
        inp=input('>>>').encode('utf-8')
        sk.sendto(inp,('127.0.0.1',9000))
        ret=sk.recv(1024)
        print(ret)
    sk.close() 
    
    
  • 相关阅读:
    互联网搜索引擎——文本预处理
    nltk的pos_tag
    nltk.stem 词干提取(stemming)
    python3的encode和decode涉及的str和bytes转换
    power rails 'GND' and 'VCC/VDD' are interconnected in net VCC
    impot不能导入自己写的python文件【爆红】
    No module named 'tensorflow.contrib'
    解决spark-submit的There is insufficient memory for the Java Runtime Environment to continue.(老顽固问题) failed; error='Cannot allocate memory' (errno=12)
    spark的standalone模式下:查看任务结束后的历史记录
    只是为了保存一些有用链接而已
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/12465952.html
Copyright © 2011-2022 走看看