这几天在学习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: '
没有打印出来。在我的例外情况下,服务器应该等到一些客户端在启动后连接它。但是,在服务器程序快速退出之前,我没有机会启动我的客户端程序。
什么问题导致这种情况?我缺少任何代码或操作吗?感谢您的帮助。