zoukankan      html  css  js  c++  java
  • 第65天python学习TCP 和 UDP流程差异

    tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端。

    服务器:

    ss = socket() #创建服务器套接字
    ss.bind()      #把地址绑定到套接字
    ss.listen()      #监听链接
    inf_loop:      #服务器无限循环
        cs = ss.accept() #接受客户端链接
        comm_loop:         #通讯循环
            cs.recv()/cs.send() #对话(接收与发送)
        cs.close()    #关闭客户端套接字
    ss.close()        #关闭服务器套接字

    客户端:
     cs = socket()    # 创建客户套接字
     cs.connect()    # 尝试连接服务器
     comm_loop:        # 通讯循环
         cs.send()/cs.recv()    # 对话(发送/接收)
     cs.close()            # 关闭客户套接字



    udp是无链接的,先启动哪一端都不会报错
    服务器:
    ss = socket()   #创建一个服务器的套接字
    ss.bind()       #绑定服务器套接字
    while True :       #服务器无限循环
        cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
    ss.close()                         # 关闭服务器套接字
    客户端:
    cs = socket()   # 创建客户套接字
    while True :      # 通讯循环
        cs.sendto()/cs.recvfrom()   # 对话(发送/接收)
    cs.close()                      # 关闭客户套接字


    UDP实例化:服务器:
    import socket
    ip_port=('127.0.0.1',9000)
    udp_server_client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    
    udp_server_client.bind(ip_port)
    
    while True:
        msg,addr=udp_server_client.recvfrom(1024)
        print(msg,addr)
    
        udp_server_client.sendto(msg.upper(),addr)

    UDP实例化:客户端:
    from socket import *
    
    udp_cs=socket(AF_INET,SOCK_DGRAM)
    
    while True:
        msg=input('>>: ').strip()
        if not msg:continue
        udp_cs.sendto(msg.encode('utf-8'),('127.0.0.1',9000))
        msg,addr=udp_cs.recvfrom(1024)
        print(msg.decode('utf-8'),addr)
     
  • 相关阅读:
    属性的简单了解
    深入方法(29)- 传址参数不能赋予常量
    深入方法(27)- 递归函数: 简单示例
    MySQL 中文字符集排序
    Yii2 Apache + Nginx 路由重写
    DQL、DML、DDL、DCL的概念与区别
    php获取指定日期的前一天,前一月,前一年日期
    PHP 获取两个时间之间的月份
    PHP 调试工具Xdebug安装配置
    Nginx 反向代理、负载均衡
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11874149.html
Copyright © 2011-2022 走看看