Python socket.accept() 直接退出

问题描述 投票:0回答:0

这几天在学习Python的socket编码,正在学习多线程socket编码的代码。我的服务器代码如下:

import socket
import threading
class Server(object):
    def __init__(self):
        self.g_conn_pool = {}
        self.num = 0      
        self.address = ('', 8022)
        self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.server_socket.bind(self.address)
        self.server_socket.listen(128)
    def accept_client(self):
        print("accept_client\n")
        while True:
            print('in')
            client_socket, info = self.server_socket.accept()
            print('client name: ' + client_socket.getsockname())
            print(client_socket, info)
            thread = threading.Thread(target=self.recv_msg, args=(client_socket, info))
            thread.daemon = True
            thread.start()
    def recv_msg(self, client, info)
        pass
multi_server = Server()
multi_server.start_new_thread()

运行程序时,好像程序总是在

client_socket, info = self.server_socket.accept()
行退出,因为
'client name: '
没有打印出来。在我的例外情况下,服务器应该等到一些客户端在启动后连接它。但是,在服务器程序快速退出之前,我没有机会启动我的客户端程序。

什么问题导致这种情况?我缺少任何代码或操作吗?感谢您的帮助。

python multithreading sockets server
© www.soinside.com 2019 - 2024. All rights reserved.