You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
4.5 KiB

  1. #include "XNetSDKTest.h"
  2. #ifdef WIN32
  3. #include <winsock2.h>
  4. #include <iphlpapi.h>
  5. #pragma comment(lib, "IPHLPAPI.lib")
  6. #pragma comment(lib,"ws2_32.lib")
  7. #else
  8. #include <sys/types.h>
  9. #include <sys/socket.h>
  10. #include <arpa/inet.h>
  11. #include<net/if.h>
  12. #include<net/if_arp.h>
  13. #include<sys/ioctl.h>
  14. #include<unistd.h>
  15. #endif
  16. int TestDevSearch()
  17. {
  18. printf("%s\r\n", __FUNCTION__);
  19. char c = 0;
  20. do
  21. {
  22. XSDK_SearchDevices(4000);
  23. }
  24. while((c = getchar()) != 'q');
  25. return 0;
  26. }
  27. bool GetMacByGetAdaptersInfo(char *pMacRet)
  28. {
  29. bool ret = false;
  30. #ifdef WIN32
  31. ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
  32. PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO));
  33. if(pAdapterInfo == NULL)
  34. {
  35. return false;
  36. }
  37. if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
  38. {
  39. free(pAdapterInfo);
  40. pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
  41. if (pAdapterInfo == NULL)
  42. {
  43. return false;
  44. }
  45. }
  46. if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == NO_ERROR)
  47. {
  48. for(PIP_ADAPTER_INFO pAdapter = pAdapterInfo; pAdapter != NULL; pAdapter = pAdapter->Next)
  49. {
  50. char acMAC[32] = {0};
  51. sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X",
  52. int (pAdapter->Address[0]),
  53. int (pAdapter->Address[1]),
  54. int (pAdapter->Address[2]),
  55. int (pAdapter->Address[3]),
  56. int (pAdapter->Address[4]),
  57. int (pAdapter->Address[5]));
  58. strcpy(pMacRet, acMAC);
  59. ret = true;
  60. break;
  61. }
  62. }
  63. free(pAdapterInfo);
  64. #else
  65. int sock_mac = socket( AF_INET, SOCK_STREAM, 0 );
  66. if( sock_mac == -1)
  67. {
  68. perror("create socket falise...mac/n");
  69. return false;
  70. }
  71. struct ifreq ifr_mac;
  72. memset(&ifr_mac,0,sizeof(ifr_mac));
  73. strncpy(ifr_mac.ifr_name, "eth0", sizeof(ifr_mac.ifr_name)-1);
  74. if( (ioctl( sock_mac, SIOCGIFHWADDR, &ifr_mac)) < 0)
  75. {
  76. printf("mac ioctl error/n");
  77. return false;
  78. }
  79. char acMAC[32] = {0};
  80. sprintf(acMAC,"%02X:%02X:%02X:%02X:%02X:%02X",
  81. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[0],
  82. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[1],
  83. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[2],
  84. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[3],
  85. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[4],
  86. (unsigned char)ifr_mac.ifr_hwaddr.sa_data[5]);
  87. strcpy(pMacRet, acMAC);
  88. ret = true;
  89. close(sock_mac);
  90. #endif
  91. return ret;
  92. }
  93. void OnDevSearchResult(int nResult, SXSDK_CONFIG_NET_COMMON *pDevs, int nCount)
  94. {
  95. printf("OnDevSearchResult[SearchResutl:%d][DeviceCount:%d]\r\n", nResult, nCount);
  96. for (int i = 0; i < nCount; i++)
  97. {
  98. printf("[%d][SN:%s][IP:%d.%d.%d.%d][Port:%d]\r\n", i, pDevs[i].sSn,
  99. pDevs[i].HostIP.c[0], pDevs[i].HostIP.c[1], pDevs[i].HostIP.c[2], pDevs[i].HostIP.c[3],
  100. pDevs[i].TCPPort);
  101. }
  102. bool bModyfyIP = false;
  103. if (bModyfyIP)
  104. {
  105. char localMac[64] = {0};
  106. bool bRet = GetMacByGetAdaptersInfo(localMac);
  107. if(!bRet)
  108. {
  109. printf("Get LocalMac Fail\r\n");
  110. return;
  111. }
  112. signed char newEncryptPsw[512];
  113. memset(newEncryptPsw, 0, 512);
  114. XSDK_EncryptPassword((const char*)"", newEncryptPsw, 512);
  115. if(pDevs != NULL)
  116. {
  117. char ip[16] = {0};
  118. char gateway[16] = {0};
  119. char submask[16] = {0};
  120. 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]);
  121. 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]);
  122. 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]);
  123. strcpy(ip, "10.10.88.219");
  124. SXSDK_CONFIG_NET_COMMON_V2 devInfo;
  125. memset(&devInfo, 0, sizeof(SXSDK_CONFIG_NET_COMMON_V2));
  126. devInfo.HostIP.l = inet_addr(ip);
  127. devInfo.Gateway.l = inet_addr(gateway);
  128. devInfo.Submask.l = inet_addr(submask);
  129. strcpy(devInfo.HostName, pDevs[0].HostName);
  130. devInfo.HttpPort = pDevs[0].HttpPort;
  131. strcpy(devInfo.LocalMac, localMac);
  132. devInfo.MaxBps = pDevs[0].MaxBps;
  133. devInfo.MaxConn = pDevs[0].MaxConn;
  134. devInfo.MonMode = 0;
  135. devInfo.nPasswordType = 1;
  136. strcpy(devInfo.Password, (const char*)newEncryptPsw);
  137. strcpy(devInfo.sMac, pDevs[0].sMac);
  138. devInfo.SSLPort = pDevs[0].SSLPort;
  139. devInfo.TCPPort = pDevs[0].TCPPort;
  140. devInfo.TransferPlan = pDevs[0].TransferPlan;
  141. devInfo.UDPPort = pDevs[0].UDPPort;
  142. strcpy(devInfo.UserName, "admin");
  143. XSDK_ModifyDevIP((const char*)&devInfo, sizeof(SXSDK_CONFIG_NET_COMMON_V2), 5000);
  144. }
  145. }
  146. }