zoukankan      html  css  js  c++  java
  • 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()
    注释:这种模式下的话,服务端可以同时连接多个客户端但是和第一个客户端进行沟通时候,其余的客户端口是接收不到信息的.
    而且客户端与服务端断开后会进行报错.需要设立一个标志位,当服务端传输什么样的信息会进行断开连接,后续的客户端才可以进行得到服务器的反馈
  • 相关阅读:
    TZOJ 挑战题库随机训练03
    版本问题解决NoNodeAvailableException[None of the configured nodes are available
    [Caffe]使用经验积累
    [Torch]的安装
    [Caffe]史上最全的caffe安装过程
    [目标检测]PVAnet原理
    [目标检测]YOLO原理
    [目标检测]SSD原理
    [C++]返回最值元素
    [C++]智能指针的实现与使用
  • 原文地址:https://www.cnblogs.com/lowen107/p/10026864.html
Copyright © 2011-2022 走看看