zoukankan      html  css  js  c++  java
  • TCP协议,UDP协议

    帅爆太阳的男人

    1,TCP协议

    • 回环地址:127.0.0.1(所有电脑都这一个默认回环地址)每个计算机都有这么一个本机地址只能被本机识别,不会被其他机器识别(因为你用这个地址传内容他就传不出去)
    • TCP三次握手:一定是client先发起请求
      • a:客户端发起请求连接服务器
      • b:服务器返回:接收到请求,并要求连接客户端
      • c:客户端回复:可以连接
    • 四次握手:client和server谁发起断开请求都可以
      • a:客户端发起断开连接的请求
        • 意思是:我想和你断开连接,我没有数据要继续发送了,但是如果你有数据要继续发送,我可以继续接受
      • b:服务器回复:我接收到你的请求了
      • c:服务器发送:我已经准备好断开连接了
      • d:客户端回复:收到你的信息,断开连接

    2,UDP协议及编码

    • sk = socket.socket(type = SOCK_DGRAM)
    • UDP协议通信的优势:
      • 允许一个服务器同时和多个客户端通信而TCP协议不行
    • 2.1>普通UDP协议代码
    import socket  # 服务器
    sk = socket.socket(type=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",8008))
    while 1:
        mas_s,addr = sk.resvfrom(1024)
        print(mas_s.decode("utf-8"),addr)
        message = sk.sendto(input(">>>").encode("utf-8"),addr)
    sk.close()  # 当然程序执行不到这
    import socket  # 客户端
    sk = socket.socket(type=socket.SOCK_DGRAM)
    while 1:
        mas_c = sk.sendto(input(">>>").encode("utf-8"),("127.0.0.1",8008))
        mass = sk.resvfrom(1024)
        print(mass.decode("utf-8"))
        sk.close()
    • 2.2>带署名的UDP协议(接收到的不在是IP地址,而是名字)
      • 服务端:
    import socket
    sk = socket.socket(type=SOCK_STREAM)
    sk.bind(("127.0.0.1",8008))
    conn, addr = sk.accept()
    while 1:
        mas_s = sk.resvfrom(1024)
        print(mas_s.decode("utf-8"),addr)
        message = sk.sendto(input(">>>").encode("utf-8"))
      • 客户端:
    import socket
    sk = socket.socket(type=SOCK_DGRAM)
    name = input("name:")
    while 1:
        msg_c = input(">>>")
        info = name + ":" + msg_c
        sk.sendto(info.encode("utf-8"),("127.0.0.1",8008))
        msg_r = sk.resvfrom(1024)
        print(msg_r.decode("utf-8"))   

    3,pycharm输出带颜色的操作

    • 格式:33[字体颜色:背景颜色m  数据  33[0m
    • 服务端
    import socket
    sk = socket.socket(typr=socket.SOCK_DGRAM)
    sk.bind(("127.0.0.1",8008))
    dic = {"alex":"33[32m","金老板":"33[33m","小雪":"33[35m"}
    while 1:
        msg_r,addr = sk.recvfrom(1024)
        msg_r = msg_r.decode("utf-8")
        name = msg_r[0].strip()
        color = dic.get(name)
        print("%s %s33[0m" % (color,msg_r)) 
        msg_s = input(">>>")
        sk.sendto(msg_s.encode("utf-8"))
        sk.close()
    • 客户端
    import socket
    sk = socket.socket(type=socket.SOCK_DGRAM)
    name = input("请输入您的芳名:")
    while 1:
        msg_c = input(">>>")
        info = name + ":"+ msg_c
        sk.sendto(info.encode("utf-8"),("127.0.0.1"))
        msg_d,addr = sk.recvfrom(1024)
        print(msg_d.decode("utf-8"))
        sk.close()
  • 相关阅读:
    简明python_Day2_字典、集合、模块、类、编程习惯
    测试2T2
    测试2T1
    bzoj2761
    一元三次方程求根公式及韦达定理
    状压DP入门——铺砖块
    高精度模板
    测试1T3
    测试1T2
    测试1T1
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9505970.html
Copyright © 2011-2022 走看看