[C++] VPN连接 →→→→→进入此内容的聊天室

来自 , 2020-04-10, 写在 C++, 查看 101 次.
URL http://www.code666.cn/view/36ac8e55
  1. CRas        ras;
  2.         RASENTRY        rasEntry;
  3.         char        strName[50];// = "COMKK";
  4.  
  5.         DWORD                   lpcb    =       0;
  6.         DWORD                   lpcDevices;    
  7.         RASDEVINFO*             lpRasDevInfo;
  8.         RASDEVINFO              rasdevinfo;
  9.        
  10.         strcpy(strName,VPNName.GetBuffer(VPNName.GetLength()));
  11.         RasEnumDevices(NULL, &lpcb, &lpcDevices);
  12.         lpRasDevInfo = (LPRASDEVINFO) GlobalAlloc(GPTR, lpcb);
  13.         lpRasDevInfo->dwSize = sizeof(RASDEVINFO);
  14.         RasEnumDevices(lpRasDevInfo, &lpcb, &lpcDevices);
  15.         strcpy (rasdevinfo.szDeviceName, lpRasDevInfo->szDeviceName);
  16.         strcpy (rasdevinfo.szDeviceType, lpRasDevInfo->szDeviceType);
  17.  
  18.         rasEntry.dwSize                         = sizeof (RASENTRY);
  19.         //rasEntry.dwfOptions           = RASEO_RemoteDefaultGateway | RASEO_SpecificNameServers;
  20.         //rasEntry.dwfOptions       = RASEO_RequireMsEncryptedPw | RASEO_RequireDataEncryption;
  21.         rasEntry.dwAlternateOffset      = 0;
  22.         rasEntry.dwCountryID            = 86;
  23.         rasEntry.dwCountryCode          = 86;
  24. //      rasEntry.dwDialExtraPercent = 75;
  25. //      rasEntry.dwDialExtraSampleSeconds = 120;
  26. //      rasEntry.dwDialMode         = 1;
  27. //      rasEntry.dwVpnStrategy = 1;
  28. //      rasEntry.dwfNetProtocols = 4;
  29.         rasEntry.dwfOptions = 1024262928;
  30. //      rasEntry.dwfOptions2 = 367;
  31.         rasEntry.dwFramingProtocol = 1;
  32. //      rasEntry.dwHangUpExtraPercent = 10;
  33. //      rasEntry.dwHangUpExtraSampleSeconds = 120;
  34. //      rasEntry.dwRedialCount = 3;
  35. //      rasEntry.dwRedialPause = 60;
  36. //      rasEntry.dwType = RASET_VPN;
  37.  
  38.         rasEntry.dwFrameSize            = 0;
  39.         rasEntry.dwfNetProtocols        = RASNP_Ip;             // TCP/IP
  40.         rasEntry.dwFramingProtocol      = RASFP_Ppp;    //PPP
  41.         rasEntry.dwChannels                     = 0;
  42.         rasEntry.dwReserved1            = 0;
  43.         rasEntry.dwReserved2            = 0;   
  44.  
  45.         // Strings
  46.         strcpy (rasEntry.szAreaCode, " ");
  47.         strcpy (rasEntry.szScript, "");
  48.         strcpy (rasEntry.szAutodialDll, "");
  49.         strcpy (rasEntry.szAutodialFunc, "");
  50.         strcpy (rasEntry.szX25PadType, "");
  51.         strcpy (rasEntry.szX25Address, "");
  52.         strcpy (rasEntry.szX25Facilities, "");
  53.         strcpy (rasEntry.szX25UserData, "");
  54.         strcpy (rasEntry.szDeviceName,"WAN 微型端口 (PPTP)");
  55.         strcpy (rasEntry.szDeviceType, "vpn"); 
  56.         strcpy (rasEntry.szLocalPhoneNumber, VPNAddress.GetBuffer(VPNAddress.GetLength()));/*"140.207.3.74"59.188.23.84"218.242.176.71"*///服务器地址或域名
  57.  
  58. //      rasEntry.dwVpnStrategy = VS_DEFAULT;     //vpn类型
  59. //      rasEntry.dwEncryptionType = ET_OPTIONAL; //数据加密类型    
  60.  
  61.         // IP addresses
  62.         InitRASIP (rasEntry.ipaddr);
  63.         InitRASIP (rasEntry.ipaddrDns);
  64.         InitRASIP (rasEntry.ipaddrDnsAlt);
  65.         InitRASIP (rasEntry.ipaddrWins);
  66.         InitRASIP (rasEntry.ipaddrWinsAlt);
  67.  
  68.         //Create Entry
  69.     DWORD                       dwError;
  70.        
  71.         dwError = ras.RasSetEntryProperties (NULL, strName, &rasEntry, sizeof (RASENTRY), NULL, NULL);
  72.         if (dwError == 0) {
  73.                 RASDIALPARAMS   dialParm;
  74.                 dialParm.dwSize = sizeof (RASDIALPARAMS);
  75.  
  76.                 strcpy (dialParm.szEntryName, strName);
  77.                 strcpy (dialParm.szPhoneNumber, "");
  78.                 strcpy (dialParm.szCallbackNumber, "");
  79.                 strcpy (dialParm.szUserName,VPNUser.GetBuffer(VPNUser.GetLength()));// "zdx"/*"hdj"*/
  80.                 strcpy (dialParm.szPassword,VPNPass.GetBuffer(VPNPass.GetLength()));// "19881011"/*"hdj"*/
  81.                 strcpy (dialParm.szDomain, "");
  82.                 dwError = ras.RasSetEntryDialParams(NULL, &dialParm,FALSE);
  83.                 if( dwError == 0 ) {
  84.                         //dwError = ras.RasSetCredentials(NULL, strName, &rasEntry, 0);
  85.                         m_log += "正在进行网络连接,请稍候...\r\n";
  86.                         frameWnd->PostMessage(WM_UPDATE_MESSAGE,0,0);
  87.                         //SetDlgItemText( IDC_EDIT_LOG, "正在进行网络连接,请稍候..." );
  88.  
  89.                         dwError = RasDial( NULL, NULL, &dialParm, 0L, NULL, &m_hRasConn );
  90.                         if ( dwError ) {
  91.                                 char  szBuf[256] = "";
  92.  
  93.                                 // 网络连接错误
  94.                                 if ( RasGetErrorString( (UINT)dwError, (LPSTR)szBuf, 255 ) != 0 ) {
  95.                                         _stprintf( (LPTSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwError );
  96.                                        
  97.                                 }
  98.                                
  99.                                 m_log += "网络连接异常...";
  100.                                 frameWnd->PostMessage(WM_UPDATE_MESSAGE,0,0);
  101.                                 //SetDlgItemText( IDC_EDIT_LOG, szBuf ),
  102.                                         EndDialog(FALSE);
  103.                                 //return FALSE;
  104.                         }
  105.                 }
  106.         }
  107.        
  108.         m_log += "远程网络已正常连接!\r\n";
  109.         frameWnd->PostMessage(WM_UPDATE_MESSAGE,0,0);

回复 "VPN连接"

这儿你可以回复上面这条便签

captcha