#include "XNetSDKTest.h" #ifdef WIN32 #include #include #pragma comment(lib, "IPHLPAPI.lib") #pragma comment(lib,"ws2_32.lib") #else #include #include #include #include #include #include #include #endif int TestDevSearch() { printf("%s\r\n", __FUNCTION__); char c = 0; do { XSDK_SearchDevices(4000); } while((c = getchar()) != 'q'); return 0; } bool GetMacByGetAdaptersInfo(char *pMacRet) { bool ret = false; #ifdef WIN32 ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO)); if(pAdapterInfo == NULL) { return false; } if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { free(pAdapterInfo); pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen); if (pAdapterInfo == NULL) { return false; } } if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == NO_ERROR) { for(PIP_ADAPTER_INFO pAdapter = pAdapterInfo; pAdapter != NULL; pAdapter = pAdapter->Next) { char acMAC[32] = {0}; sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X", int (pAdapter->Address[0]), int (pAdapter->Address[1]), int (pAdapter->Address[2]), int (pAdapter->Address[3]), int (pAdapter->Address[4]), int (pAdapter->Address[5])); strcpy(pMacRet, acMAC); ret = true; break; } } free(pAdapterInfo); #else int sock_mac = socket( AF_INET, SOCK_STREAM, 0 ); if( sock_mac == -1) { perror("create socket falise...mac/n"); return false; } struct ifreq ifr_mac; memset(&ifr_mac,0,sizeof(ifr_mac)); strncpy(ifr_mac.ifr_name, "eth0", sizeof(ifr_mac.ifr_name)-1); if( (ioctl( sock_mac, SIOCGIFHWADDR, &ifr_mac)) < 0) { printf("mac ioctl error/n"); return false; } char acMAC[32] = {0}; sprintf(acMAC,"%02X:%02X:%02X:%02X:%02X:%02X", (unsigned char)ifr_mac.ifr_hwaddr.sa_data[0], (unsigned char)ifr_mac.ifr_hwaddr.sa_data[1], (unsigned char)ifr_mac.ifr_hwaddr.sa_data[2], (unsigned char)ifr_mac.ifr_hwaddr.sa_data[3], (unsigned char)ifr_mac.ifr_hwaddr.sa_data[4], (unsigned char)ifr_mac.ifr_hwaddr.sa_data[5]); strcpy(pMacRet, acMAC); ret = true; close(sock_mac); #endif return ret; } void OnDevSearchResult(int nResult, SXSDK_CONFIG_NET_COMMON *pDevs, int nCount) { printf("OnDevSearchResult[SearchResutl:%d][DeviceCount:%d]\r\n", nResult, nCount); for (int i = 0; i < nCount; i++) { printf("[%d][SN:%s][IP:%d.%d.%d.%d][Port:%d]\r\n", i, pDevs[i].sSn, pDevs[i].HostIP.c[0], pDevs[i].HostIP.c[1], pDevs[i].HostIP.c[2], pDevs[i].HostIP.c[3], pDevs[i].TCPPort); } bool bModyfyIP = false; if (bModyfyIP) { char localMac[64] = {0}; bool bRet = GetMacByGetAdaptersInfo(localMac); if(!bRet) { printf("Get LocalMac Fail\r\n"); return; } signed char newEncryptPsw[512]; memset(newEncryptPsw, 0, 512); XSDK_EncryptPassword((const char*)"", newEncryptPsw, 512); if(pDevs != NULL) { char ip[16] = {0}; char gateway[16] = {0}; char submask[16] = {0}; sprintf(ip, "%d.%d.%d.%d", pDevs[0].HostIP.c[0], pDevs[0].HostIP.c[1], pDevs[0].HostIP.c[2], pDevs[0].HostIP.c[3]); sprintf(gateway, "%d.%d.%d.%d", pDevs[0].Gateway.c[0], pDevs[0].Gateway.c[1], pDevs[0].Gateway.c[2], pDevs[0].Gateway.c[3]); sprintf(submask, "%d.%d.%d.%d", pDevs[0].Submask.c[0], pDevs->Submask.c[1], pDevs[0].Submask.c[2], pDevs[0].Submask.c[3]); strcpy(ip, "10.10.88.219"); SXSDK_CONFIG_NET_COMMON_V2 devInfo; memset(&devInfo, 0, sizeof(SXSDK_CONFIG_NET_COMMON_V2)); devInfo.HostIP.l = inet_addr(ip); devInfo.Gateway.l = inet_addr(gateway); devInfo.Submask.l = inet_addr(submask); strcpy(devInfo.HostName, pDevs[0].HostName); devInfo.HttpPort = pDevs[0].HttpPort; strcpy(devInfo.LocalMac, localMac); devInfo.MaxBps = pDevs[0].MaxBps; devInfo.MaxConn = pDevs[0].MaxConn; devInfo.MonMode = 0; devInfo.nPasswordType = 1; strcpy(devInfo.Password, (const char*)newEncryptPsw); strcpy(devInfo.sMac, pDevs[0].sMac); devInfo.SSLPort = pDevs[0].SSLPort; devInfo.TCPPort = pDevs[0].TCPPort; devInfo.TransferPlan = pDevs[0].TransferPlan; devInfo.UDPPort = pDevs[0].UDPPort; strcpy(devInfo.UserName, "admin"); XSDK_ModifyDevIP((const char*)&devInfo, sizeof(SXSDK_CONFIG_NET_COMMON_V2), 5000); } } }