int CTCPConnect::GetCustLevel(CString StrCardNum,CString strIP,CString strPort,UINT iOverTime) { if (StartSocket(strPort,strIP)) { char cCardNum[30]; CCommonConvert::CStringToChar(StrCardNum,cCardNum); SocketPackage package = MakePackage(cCardNum); int size = sizeof(package); SendTo((char*)&package,sizeof(package)); CString CardNum = _T("cardnum:")+StrCardNum; WriteLogWithTime(CardNum); char CardRecv[255]; BOOL RecvTemp = FALSE; setsockopt(m_tSocket,SOL_SOCKET,SO_RCVTIMEO,(char *)&iOverTime,sizeof(UINT)); if (!RecvFrom(CardRecv,255)) { return -1; } int iLevel = GetLevel(CardRecv); //RecvFrom() CloseSocket(); return iLevel; } else { CString strErr = _T("socket启动失败"); return -1; } }
BOOL MySocketUDP::SendTo( CHAR * pData, UINT nLen, LPSOCKADDR_IN pSockaddr_in) { StartSocket(0); try { int iRet = ::sendto(m_uSocket, pData, nLen, 0, (LPSOCKADDR)pSockaddr_in, sizeof(SOCKADDR_IN)); //int iRet = ::sendto(m_uSocket, pData, nLen, MSG_DONTWAIT, (LPSOCKADDR)pSockaddr_in, sizeof(SOCKADDR_IN)); if(iRet == SOCKET_ERROR) { return FALSE; } } catch (CException* e) { return FALSE; } return TRUE; }
int main(int argumentCount, char* arguments[]) { SysCtrlNode server; ClientConnector clientConnector; /*handle connection with client*/ PlNodeConnector plNodeConnector; /*handle connection with plNode*/ BackupSysCtrlNodeController backupSysCtrlNodeController; /*handle backup sys ctrl node*/ MyLog logger; bool recovery = false; char buffer[1024]; bool backup = false; int i; int portIndex = 0; int portToListen; int portToConnect; // char buffer[1024]; // int cmd; // printf("recovery? 0(false) / 1(true) \n"); // gets(buffer); // sscanf(buffer, "%d", &cmd); // if (cmd == 0) // { // recovery = false; // } // else if (cmd == 1) // { // recovery = true; // } for (i = 1; i < argumentCount; ++i) { if (0 == strcmp("recover", arguments[i])) { recovery = true; } if (0 == strcmp("backup", arguments[i])) { backup = true; } if (1 == sscanf(arguments[i], "portIndex%d", &portIndex)) { } } InitializeMemeryHook(); StartSocket(); if (!InitConfig()) { printf("config file cannot be found.\n"); getchar(); return 0; } InitLogSystem(&logger, "SysCtrlNodeLog.txt", recovery); SysCtrlNodeConstruct(&server, &logger, backup, recovery); ClientConnectorConstruct(&clientConnector, &server); ClientConnectorSetListeningPort(&clientConnector, portIndex == 0 ? g_configData.clientListeningPort : g_configData.clientListeningPort2); SysCtrlNodeSetClientConnector(&server, &clientConnector); PlNodeConnectorConstruct(&plNodeConnector, &server); PlNodeConnectorSetListeningPort(&plNodeConnector, portIndex == 0 ? g_configData.plNodeListeningPort : g_configData.plNodeListeningPort2); SysCtrlNodeSetPlNodeConnector(&server, &plNodeConnector); BackupSysCtrlNodeControllerConstruct(&backupSysCtrlNodeController, &server); if (portIndex == 0) { portToListen = g_configData.selfListeningPort; portToConnect = g_configData.selfListeningPort2; } else { portToListen = g_configData.selfListeningPort2; portToConnect = g_configData.selfListeningPort; } // connect to other port BackupSysCtrlNodeControllerSetTargetServerIPAndPort(&backupSysCtrlNodeController, g_configData.szIP, portToListen, portIndex, portToConnect); SysCtrlNodeSetBackupSysCtrlNodeController(&server, &backupSysCtrlNodeController); SysCtrlNodeStart(&server); printf("**** To shutdown the whole system, type 'shutdown' in either SysCtrlNode. ****\n"); do { gets(buffer); } while (strcmp(buffer, "shutdown") != 0); SysCtrlNodeShutdownSystem(&server); PlNodeConnectorDestruct(&plNodeConnector); ClientConnectorDestruct(&clientConnector); SysCtrlNodeDestruct(&server); DestroyLogSystem(&logger); DestroySocket(); if (FinalCheckMemoryAllocation()) { } return 0; }