鬼畜材料练习生 2021-11-02 21:22 采纳率: 66.7%
浏览 5
已结题

python:为什么我的服务器无法在客户端都关闭以后关闭自身?


import os
from socket import *
from threading import Thread
# 定义域名和端口号
Host = ""
Port = 65535
#创建缓冲区
Buffer_size = 1024
Address = (Host,Port)
#创建服务器的套接字
#第一个参数:IPv4
#第二个参数:代表基于TCP的协议
tcp_server_socket = socket(AF_INET,SOCK_STREAM)
#绑定域名和端口号
tcp_server_socket.bind(Address)
#监听连接
#括号中的数字:设置内核中队列的长度,高并发服务器中,该值应该加大
tcp_server_socket.listen(127)
print("服务器创建成功,等待客户端连接")
#将处理数据的部分,封装成一个用于多线程的函数
def task(tcp_client_socket):
    while True:
        # 接收缓冲区的字节长度
        # decode()解码 bytes -》 str
        # encode() -》 编码 str -》 bytes
        data = tcp_client_socket.recv(Buffer_size).decode()  # recv() -》 从接收缓冲区读取指定长度的数字
        if len(data) == 0 or data =='quit':
            break
        print("data = ", data)
        # 发送信息
        tcp_client_socket.send(data.encode())
    tcp_client_socket.close()
#定义一个循环目的:等待客户端的连接
while True:
    #定义一个客户端的连接对象(端口号和域名)
    tcp_client_socket,address = tcp_server_socket.accept()
    print("连接服务器的客户端对象:",address)
    #定义一个循环目的:开始接收数据
    t = Thread(target = task,args = (tcp_client_socket,))
    t.start()

tcp_server_socket.close()

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月10日
    • 创建了问题 11月2日

    悬赏问题

    • ¥15 基于单片机数字电压表电路组成及框图
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line