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

📄 nettest.cpp

📁 lan test program. for Windows Embedded CE 5.0.
💻 CPP
字号:
// nettest.cpp : 傾僾儕働乕僔儑儞梡偺僄儞僩儕 億僀儞僩偺掕媊
//

#include "stdafx.h"
#include "utilsys.h"


#define lengthof(exp) ((sizeof((exp)))/sizeof((*(exp))))

#define KEYNAME_TCPIP				TEXT("Comm\\SMS91C111\\Parms\\TcpIp")
#define VALNAME_DHCP				TEXT("EnableDHCP")
#define VALNAME_GATEWAY				TEXT("DefaultGateway")
#define VALNAME_IPADDRESS			TEXT("IpAddress")
#define VALNAME_SUBNETMASK			TEXT("Subnetmask")
#define VALNAME_DNS					TEXT("DNS")
#define VALNAME_WINS				TEXT("WINS")
#define VALNAME_HOSTIPADDRESS		TEXT("HostIpAddress")

#define FILENAME_INI				TEXT("\\sdmemory\\ipaddr.ini")

static const TCHAR szRegKey[]				= KEYNAME_TCPIP;

static const TCHAR szRegDhcp[] 	= VALNAME_DHCP;
static const TCHAR szRegGateWay[] 	= VALNAME_GATEWAY;
static const TCHAR szRegIPAddress[] 	= VALNAME_IPADDRESS;
static const TCHAR szRegSubnetMask[] 	= VALNAME_SUBNETMASK;

BOOL ReadIni(LPCWSTR pwszSection, LPCWSTR pwszKey, LPWSTR pwszValue, size_t cchValue, LPCWSTR pwszIniFile)
{
   // GetPrivateProfileString is unavailable on CE

   BOOL bSuccess = FALSE;
   FILE * fin;
   WCHAR wszLine[256];
   LPWSTR pwsz = NULL;

   if (!pwszIniFile ||
      !pwszSection ||
      !pwszKey ||
      !pwszValue ||
      !cchValue)
   {
      goto leave;
   }

   fin = _wfopen(pwszIniFile, L"r");
   if (fin)
   {
      while (fgetws(wszLine, lengthof(wszLine), fin))
      {
         if (!wcsstr(wszLine, pwszSection)) // Section
         {
            continue;
         }

         while (fgetws(wszLine, lengthof(wszLine), fin)) // Key & Value
         {
            pwsz = wcschr(wszLine, L'=');
            if (!pwsz)
            {
               continue;
            }

            *pwsz = L'\0'; // Erase the '='

            if (0 != _wcsicmp(wszLine, pwszKey)) // Key
            {
               continue;
            }

            pwsz++; // Point to the value

            bSuccess = StringCchCopyEx(
                                    pwszValue,
                                    cchValue,
                                    pwsz,
                                    &pwsz,
                                    NULL,
                                    0
                                    );

            if (bSuccess == 0)
            {
               if (*--pwsz == L'\n')
               {
                  *pwsz = L'\0';
               }
            }
         }
      }

      fclose(fin);
   }

leave:
   return bSuccess;
}

void SetRegistryDWORD(DWORD *dwState, LPCTSTR lpszRegKey, LPCTSTR lpszRegValue)
{
	HKEY	hKey;

	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszRegKey, 0, 0, &hKey))
	{
		RegSetValueEx(hKey, lpszRegValue, 0, REG_DWORD, (LPBYTE)dwState, sizeof(DWORD));
		RegCloseKey(hKey);
	}
	else
	{
		RETAILMSG(1, (TEXT("NetTest: ERROR: RegOpenKeyEx()\r\n")));
	}
}

void SetRegistryREG_SZ(LPCTSTR szState, LPCTSTR lpszRegKey, LPCTSTR lpszRegValue)
{
	HKEY	hKey;

	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszRegKey, 0, 0, &hKey))
	{
        RegSetValueEx(hKey, lpszRegValue, 0, REG_SZ, (BYTE *)szState, (wcslen(szState)+1)*sizeof(WCHAR));
		RegCloseKey(hKey);
	}
	else
	{
		RETAILMSG(1, (TEXT("NetTest: ERROR: RegOpenKeyEx()\r\n")));
	}
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
	DWORD 	EnableDHCP = 0;			// dhcp
	TCHAR 	szEnableDHCP[20];			// dhcp
	TCHAR 	szIPAddress[20];	// IPADDRESS
	TCHAR 	szHostIPAddress[20];	// HostIPAddress
	TCHAR 	szGateWay[20];		// Default GateWay
	TCHAR 	szSubnetMask[20];	// SubnetMask
	TCHAR 	szDNS[20];	// DNS
	TCHAR 	szWINS[20];	// WINS

	BOOL status;

    RETAILMSG(1, (TEXT("starting app...\r\n")));
	//
	// file ipaddr.ini 傛傝TCP/IP愝掕忣曬偲儂僗僩PC偺IP傾僪儗僗傪庢摼偡傞
	//

#if 1
	// EnableDHCP
    status = ReadIni(L"[TcpIp]", VALNAME_DHCP, szEnableDHCP, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		if(_wcsicmp(szEnableDHCP, L"1") == 0) {
			EnableDHCP = 1;
		}
		RETAILMSG(1, (TEXT("EnableDHCP = %d\r\n"), EnableDHCP));
	}
	SetRegistryDWORD(&EnableDHCP, szRegKey, VALNAME_DHCP);

	// IpAddress
    status = ReadIni(L"[TcpIp]", VALNAME_IPADDRESS, szIPAddress, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("IpAddress = %s\r\n"), szIPAddress));
		SetRegistryREG_SZ(szIPAddress, szRegKey, VALNAME_IPADDRESS);
	}else {
		RETAILMSG(1, (TEXT("don't setting IpAddress \r\n")));
	}
	// DefaultGateway
    status = ReadIni(L"[TcpIp]", VALNAME_GATEWAY, szGateWay, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("DefaultGateway = %s\r\n"), szGateWay));
		SetRegistryREG_SZ(szGateWay, szRegKey, VALNAME_GATEWAY);
	}else {
		RETAILMSG(1, (TEXT("don't setting DefaultGateway \r\n")));
	}

	// Subnetmask
    status = ReadIni(L"[TcpIp]", VALNAME_SUBNETMASK, szSubnetMask, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("Subnetmask = %s\r\n"), szSubnetMask));
		SetRegistryREG_SZ(szSubnetMask, szRegKey, VALNAME_SUBNETMASK);
	}else {
		RETAILMSG(1, (TEXT("don't setting Subnetmask \r\n")));
	}

	// DNS
    status = ReadIni(L"[TcpIp]", VALNAME_DNS, szDNS, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("DNS = %s\r\n"), szDNS));
		SetRegistryREG_SZ(szDNS, szRegKey, VALNAME_DNS);
	}else {
		RETAILMSG(1, (TEXT("don't setting DNS \r\n")));
	}
	// WINS
    status = ReadIni(L"[TcpIp]", VALNAME_WINS, szWINS, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("WINS = %s\r\n"), szWINS));
		SetRegistryREG_SZ(szWINS, szRegKey, VALNAME_WINS);
	}else {
		RETAILMSG(1, (TEXT("don't setting WINS \r\n")));
	}
	
	// 峏怴撪梕偺斀塮
	NdisRebindAdapter();

#endif
	//
	// 儂僗僩PC偵懳偟PING傪峴偆
	//
	// HostIpAddress
	TCHAR szPingString[40];
	SHELLEXECUTEINFO	sei = { 0 };

    status = ReadIni(L"[TcpIp]", VALNAME_HOSTIPADDRESS, szHostIPAddress, 19, FILENAME_INI);
	if(status == ERROR_SUCCESS) {
		RETAILMSG(1, (TEXT("HostIpAddress = %s\r\n"), szHostIPAddress));
	}else {
		RETAILMSG(1, (TEXT("don't read HostIpAddress\r\n")));
		goto exit;
	}
//    wsprintf((LPTSTR)szPingString, _T("ping %s"), szHostIPAddress);

// wsprintf((LPTSTR)szPingString, _T("ping senoo"));
wsprintf((LPTSTR)szPingString, _T("ping"));
RETAILMSG(1, (TEXT("szPingString=%s\r\n"), szPingString));
	//峔憿懱偺僒僀僘
	sei.cbSize = sizeof(SHELLEXECUTEINFO);						
	//婲摦懁偺僂僀儞僪僂僴儞僪儖
	sei.hwnd = NULL;											
	//婲摦屻偺昞帵忬懺
	sei.nShow = SW_SHOWNORMAL;									
	//偙偺僷儔儊乕僞偑廳梫偱丄僙僢僩偟側偄偲SHELLEXECUTEINFO峔憿懱偺hProcess儊儞僶偑僙僢僩偝傟側偄丅
	sei.fMask = SEE_MASK_NOCLOSEPROCESS;
	sei.lpVerb = _T("open");	
	sei.lpFile = _T("ping");
	sei.lpParameters = szHostIPAddress;
	//僾儘僙僗婲摦
	ShellExecuteEx(&sei);
	//廔椆傪懸偮
	WaitForSingleObject( sei.hProcess, INFINITE ) ;	
exit:
    RETAILMSG(1, (TEXT("ending app...\r\n")));

	return 0;
}

⌨️ 快捷键说明

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