import socket
import time


tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcp_socket.bind(("", 9999))

tcp_socket.listen(128)

tcp_socket.setblocking(False)

new_socket_list = list()

while True:

    time.sleep(1)  # 用于调试

    try:
        new_socket, new_addr = tcp_socket.accept()
    except Exception as e:
        print("没有客户连接")
    else:
        print("新来了客户端连接%s:%s" % new_addr)
        new_socket.setblocking(False)
        new_socket_list.append(new_socket)

    for socket in new_socket_list:
        try:
            recv_data = socket.recv(1024)
        except Exception as e:
            print("%s:%s没有发送过来数据" % new_addr)
        else:
            if recv_data:
                print("接收%s:%s发送来的数据" % new_addr)
            else:  # recv_data为空,说明客户端调用了close,此时该socket全部数据接收完毕,应从列表移除
                socket.close()
                new_socket_list.remove(socket)
                print("%s:%s断开连接" % new_addr)

 

相关文章:

  • 2021-05-17
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2021-12-14
  • 2022-03-04
猜你喜欢
  • 2022-01-03
  • 2021-04-01
  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
  • 2021-05-15
相关资源
相似解决方案