• UDP协议下的socket


    server端

    import socket
    from socket import SOL_SOCKET,SO_REUSEADDR
    sk = socket.socket()
    # sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 
    sk.bind(('127.0.0.1',8090))
    sk.listen()
    conn,addr = sk.accept()  #在这阻塞,等待客户端过来连接
    while True:
        ret = conn.recv(1024)  #接收消息  在这还是要阻塞,等待收消息
        ret = ret.decode('utf-8')  #字节类型转换为字符串中文
        print(ret)
        if ret == 'bye':        #如果接到的消息为bye,退出
            break
        msg = input('服务端>>')  #服务端发消息
        conn.send(msg.encode('utf-8'))
        if msg == 'bye':
            break
    
    conn.close()
    sk.close()

    client端
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8090)) #连接服务端
    
    while True:
        msg = input('客户端>>>')  #input阻塞,等待输入内容
        sk.send(msg.encode('utf-8'))
        if msg == 'bye':
            break
        ret = sk.recv(1024)
        ret = ret.decode('utf-8')
        print(ret)
        if ret == 'bye':
            break
    sk.close()
    注释:这种模式下的话,服务端可以同时连接多个客户端但是和第一个客户端进行沟通时候,其余的客户端口是接收不到信息的.
    而且客户端与服务端断开后会进行报错.需要设立一个标志位,当服务端传输什么样的信息会进行断开连接,后续的客户端才可以进行得到服务器的反馈
  • 相关阅读:
    Yum源的优先级
    history设置时间戳
    ntopng网络流量实时监控
    Filezilla开源FTP传输工具
    红黑树从头至尾插入和删除结点的全程演示图
    清晰理解红黑树的演变---红黑的含义
    ConcurrentHashMap的JDK1.8实现
    linux常用命令
    Java类加载过程
    MySQL存储引擎--MyISAM与InnoDB区别
  • 原文地址:https://www.cnblogs.com/lowen107/p/10026864.html
Copyright © 2020-2023  润新知