def sendQuitPackage():
    try:
        ADDRESS = (hakuCore.config.HOST, hakuCore.config.RECEIVEPORT)
        msg = 'POST / HTTP/1.0\r\nX-Self-Id: 1009\r\nConnect-Length: 0\r\n\r\n'
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        #server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server_socket.connect(ADDRESS)
        server_socket.send(msg.encode('utf-8', errors='ignore'))
        rpyMsg = server_socket.recv(hakuCore.config.BUF_SIZE)
        server_socket.close()
        directPrintLog('Quit package send successfully!')
    except:
        server_socket.close()
        directPrintLog('Quit package send ERROR!')
def judgeServerStatus():
    global serverThread
    if serverThread.isAlive():
        return True
    else:
        directPrintLog("\nserver.py start FAILED!\n")

        #重试5次
        retry = 0
        while retry < 5 and not serverThread.isAlive():
            directPrintLog('Try to restart it within 15 seconds. (' +
                           str(retry + 1) + '/5)')
            time.sleep(15)
            #time.sleep(5)
            retry += 1
            directPrintLog('Try to restart server.py ...')
            serverThread = threading.Thread(target=server.main, daemon=True)
            serverThread.start()
            time.sleep(2)
            if serverThread.isAlive():
                directPrintLog('Restart successfully!\n')
                return True
            else:
                directPrintLog("server.py restart FAILED!\n")

        directPrintLog('Give up.')
        setQuit()
        directPrintLog('Quit flag setted.')
        directPrintLog('Waiting for threads...')
        while timerThread.isAlive() or serverThread.isAlive():
            time.sleep(1)

    return False
        else:
            os.rename('data/groupTime', 'data/groupTime.old')
            os.mkdir('data/groupTime')
    else:
        print('Create groupTime dir.')
        os.mkdir('data/groupTime')


# 检测 data 文件夹
checkDir()

# 初始化日志
startLog()

# 配置文件检查
directPrintLog("\nCheck for config errors...")

# 启动 server
directPrintLog('Starting service.')
serverThread = threading.Thread(target=server.main, daemon=True)
serverThread.start()

# 等待初始化完成
time.sleep(1)

if judgeServerStatus():
    directPrintLog("Successful! Press Ctrl+C to quit.\n")
    #print(timerThread.isAlive(), serverThread.isAlive())
    try:
        while serverThread.isAlive():
            time.sleep(1)