⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connect_and_restart.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
#include "mpdimpl.h"#include "GetOpt.h"#include "Translate_Error.h"void ConnectAndRestart(int *argc, char ***argv, char *host){    SOCKET sock;    char str[CONSOLE_STR_LENGTH+1];    char *result;    int error;    char phrase[MPD_PASSPHRASE_MAX_LENGTH+1];    int port = -1;    bool bAskPwd;    easy_socket_init();    GetOpt(*argc, *argv, "-port", &port);    bAskPwd = GetOpt(*argc, *argv, "-getphrase");    GetOpt(*argc, *argv, "-phrase", phrase);    ParseRegistry(false);    if (host == NULL || host[0] == '\0')	host = g_pszHost;    if (port == -1)	port = g_nPort;    if (easy_create(&sock, 0, INADDR_ANY) == SOCKET_ERROR)    {	error = WSAGetLastError();	Translate_Error(error, str);	err_printf("easy_create failed: %d\n%s\n", error, str);	return;    }    if (bAskPwd || !ReadMPDRegistry("phrase", phrase, false))    {	printf("please input the passphrase: ");fflush(stdout);	HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);	DWORD dwMode;	if (!GetConsoleMode(hStdin, &dwMode))		dwMode = ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT;	SetConsoleMode(hStdin, dwMode & ~ENABLE_ECHO_INPUT);	gets(phrase);	SetConsoleMode(hStdin, dwMode);	printf("\n");fflush(stdout);    }    dbg_printf("connecting to %s:%d\n", host, port);    if (easy_connect(sock, host, port) == SOCKET_ERROR)    {	error = WSAGetLastError();	Translate_Error(error, str);	err_printf("easy_connect failed: %d\n%s\n", error, str);	easy_closesocket(sock);	return;    }    if (!ReadString(sock, str))    {	err_printf("reading challenge string failed.\n");	easy_closesocket(sock);	return;    }    if (strlen(phrase) + strlen(str) > MPD_PASSPHRASE_MAX_LENGTH)    {	err_printf("unable to process passphrase.\n");	easy_closesocket(sock);	return;    }    strcat(phrase, str);    result = crypt(phrase, MPD_SALT_VALUE);    memset(phrase, 0, strlen(phrase)); // zero out the passphrase    strcpy(str, result);    if (WriteString(sock, str) == SOCKET_ERROR)    {	error = WSAGetLastError();	Translate_Error(error, str);	err_printf("WriteString of the encrypted response string failed: %d\n%s\n", error, str);	easy_closesocket(sock);	return;    }    if (!ReadString(sock, str))    {	err_printf("reading authentication result failed.\n");	easy_closesocket(sock);	return;    }    if (strcmp(str, "SUCCESS"))    {	err_printf("host authentication failed.\n");	easy_closesocket(sock);	return;    }    if (WriteString(sock, "console") == SOCKET_ERROR)    {	error = WSAGetLastError();	Translate_Error(error, str);	err_printf("WriteString('console') failed: %d\n%s\n", error, str);	easy_closesocket(sock);	return;    }    dbg_printf("connected\n");    // send restart request    if (WriteString(sock, "restart") == SOCKET_ERROR)    {	error = WSAGetLastError();	err_printf("writing '%s' failed, %d\n", str, error);	Translate_Error(error, str);	err_printf("%s\n", str);	return;    }    //dbg_printf("waiting for result\n");    if (ReadStringTimeout(sock, str, MPD_DEFAULT_TIMEOUT))    {	dbg_printf("%s\n", str);    }    if (WriteString(sock, "done") == SOCKET_ERROR)    {	error = WSAGetLastError();	Translate_Error(error, str);	err_printf("WriteString failed: %d\n%s\n", error, str);    }    easy_closesocket(sock);    easy_socket_finalize();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -