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

📄 mpdutil.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    {	printf("Error: ConnectToMPDquick(%s:%d): authentication request failed.\n", host, port);	fflush(stdout);	easy_closesocket(sock);	return -1;    }    if (WriteString(sock, "console") == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDquick(%s:%d): WriteString failed after attempting passphrase authentication: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	printf("%s\n", err_msg);	fflush(stdout);	easy_closesocket(sock);	return error;    }    //printf("connected to %s\n", host);fflush(stdout);    *psock = sock;    return 0;}int ConnectToMPDReport(const char *host, int port, const char *inphrase, SOCKET *psock, char *err_msg){    SOCKET sock;    char str[512];    char *result;    int error;#ifdef USE_LINGER_SOCKOPT    struct linger linger;#endif    BOOL b;    char phrase[MPD_PASSPHRASE_MAX_LENGTH+20];    if (host == NULL || host[0] == '\0' || port < 1 || inphrase == NULL || psock == NULL)    {	strcpy(err_msg, "Error: ConnectToMPDReport: Invalid argument");	return -1;    }    if (easy_create(&sock, 0, INADDR_ANY) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDReport(%s:%d): easy_create failed: %d, ", host, port, error);	Translate_Error(error, err_msg, str);	return error;    }#ifdef USE_LINGER_SOCKOPT    linger.l_onoff = 1;    linger.l_linger = 60;    if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger)) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDReport(%s:%d): setsockopt failed: %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }#endif    b = TRUE;    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&b, sizeof(BOOL));    //printf("connecting to %s:%d\n", host, port);fflush(stdout);    if (easy_connect(sock, (char*)host, port) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDReport(%s:%d): easy_connect failed: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	if (error == WSAEINVAL)	{	    strcat(err_msg, ".  The hostname is probably invalid.");	}	easy_closesocket(sock);	return error;    }    if (!ReadStringTimeout(sock, str, MPD_CONNECT_READ_TIMEOUT))    {	sprintf(err_msg, "Error: ConnectToMPDReport(%s:%d): reading prepend string failed.", host, port);	easy_closesocket(sock);	return -1;    }    //strcat(phrase, str);    _snprintf(phrase, MPD_PASSPHRASE_MAX_LENGTH+20, "%s%s", inphrase, str);    if (g_bCryptFirst)    {	InitializeCriticalSection(&g_hCryptCriticalSection);	g_bCryptFirst = false;    }    EnterCriticalSection(&g_hCryptCriticalSection);    result = crypt(phrase, MPD_SALT_VALUE);    strcpy(str, result);    LeaveCriticalSection(&g_hCryptCriticalSection);    memset(phrase, 0, MPD_PASSPHRASE_MAX_LENGTH); // zero out local copy of the passphrase    if (WriteString(sock, str) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDReport(%s:%d): WriteString of the crypt string failed: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }    if (!ReadStringTimeout(sock, str, MPD_CONNECT_READ_TIMEOUT))    {	sprintf(err_msg, "Error: ConnectToMPDReport(%s:%d): reading authentication result failed.", host, port);	easy_closesocket(sock);	return -1;    }    if (strcmp(str, "SUCCESS"))    {	sprintf(err_msg, "Error: ConnectToMPDReport(%s:%d): authentication request failed.", host, port);	easy_closesocket(sock);	return -1;    }    if (WriteString(sock, "console") == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error: ConnectToMPDReport(%s:%d): WriteString failed after attempting passphrase authentication: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }    strcpy(err_msg, "ERROR_SUCCESS");    //printf("connected to %s\n", host);fflush(stdout);    *psock = sock;    return 0;}int ConnectToMPDquickReport(const char *host, int port, const char *inphrase, SOCKET *psock, char *err_msg){    SOCKET sock;    char str[512];    char *result;    int error;#ifdef USE_LINGER_SOCKOPT    struct linger linger;#endif    BOOL b;    char phrase[MPD_PASSPHRASE_MAX_LENGTH+20];    if (host == NULL || host[0] == '\0' || port < 1 || inphrase == NULL || psock == NULL)    {	strcpy(err_msg, "Error: ConnectToMPDquickReport: Invalid argument");	return -1;    }    if (easy_create(&sock, 0, INADDR_ANY) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error:ConnectToMPDquickReport(%s:%d): easy_create failed: %d, ", host, port, error);	Translate_Error(error, err_msg, str);	return error;    }#ifdef USE_LINGER_SOCKOPT    linger.l_onoff = 1;    linger.l_linger = 60;    if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger)) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error:ConnectToMPDquickReport(%s:%d): setsockopt failed: %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }#endif    b = TRUE;    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&b, sizeof(BOOL));    //printf("connecting to %s:%d\n", host, port);fflush(stdout);    if (easy_connect_quick(sock, (char*)host, port) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error:ConnectToMPDquickReport(%s:%d): easy_connect failed: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	if (error == WSAEINVAL)	{	    strcat(err_msg, ".  The hostname is probably invalid.");	}	easy_closesocket(sock);	return error;    }    if (!ReadStringTimeout(sock, str, MPD_CONNECT_READ_TIMEOUT))    {	sprintf(err_msg, "Error:ConnectToMPDquickReport(%s:%d): reading challenge prepend string failed.", host, port);	easy_closesocket(sock);	return -1;    }    //strcat(phrase, str);    _snprintf(phrase, MPD_PASSPHRASE_MAX_LENGTH+20, "%s%s", inphrase, str);    if (g_bCryptFirst)    {	InitializeCriticalSection(&g_hCryptCriticalSection);	g_bCryptFirst = false;    }    EnterCriticalSection(&g_hCryptCriticalSection);    result = crypt(phrase, MPD_SALT_VALUE);    strcpy(str, result);    LeaveCriticalSection(&g_hCryptCriticalSection);    memset(phrase, 0, MPD_PASSPHRASE_MAX_LENGTH); // zero out local copy of the passphrase    if (WriteString(sock, str) == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error:ConnectToMPDquickReport(%s:%d): WriteString of the crypt string failed: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }    if (!ReadStringTimeout(sock, str, MPD_CONNECT_READ_TIMEOUT))    {	sprintf(err_msg, "Error:ConnectToMPDquickReport(%s:%d): reading mpd authentication result failed.", host, port);	easy_closesocket(sock);	return -1;    }    if (strcmp(str, "SUCCESS"))    {	sprintf(err_msg, "Error:ConnectToMPDquickReport(%s:%d): mpd authentication request failed.", host, port);	easy_closesocket(sock);	return -1;    }    if (WriteString(sock, "console") == SOCKET_ERROR)    {	error = WSAGetLastError();	sprintf(str, "Error:ConnectToMPDquickReport(%s:%d): WriteString failed after attempting passphrase authentication: error %d, ", host, port, error);	Translate_Error(error, err_msg, str);	easy_closesocket(sock);	return error;    }    strcpy(err_msg, "ERROR_SUCCESS");    //printf("connected to %s\n", host);fflush(stdout);    *psock = sock;    return 0;}void MakeLoop(SOCKET *psockRead, SOCKET *psockWrite){    SOCKET sock;    char host[100];    int port;    // Create a listener    if (easy_create(&sock, ADDR_ANY, INADDR_ANY) == SOCKET_ERROR)    {	*psockRead = INVALID_SOCKET;	*psockWrite = INVALID_SOCKET;	return;    }    listen(sock, 5);    easy_get_sock_info(sock, host, &port);        // Connect to myself    if (easy_create(psockWrite, ADDR_ANY, INADDR_ANY) == SOCKET_ERROR)    {	easy_closesocket(sock);	*psockRead = INVALID_SOCKET;	*psockWrite = INVALID_SOCKET;	return;    }    if (easy_connect(*psockWrite, host, port) == SOCKET_ERROR)    {	easy_closesocket(*psockWrite);	easy_closesocket(sock);	*psockRead = INVALID_SOCKET;	*psockWrite = INVALID_SOCKET;	return;    }    // Accept the connection from myself    *psockRead = easy_accept(sock);    easy_closesocket(sock);}

⌨️ 快捷键说明

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