#include <stdio.h>
#include <windows.h>
#include <tchar.h>
#include <assert.h>
#include <Ras.h>
#pragma comment (lib,"rasapi32.lib")
#define ENTRY TEXT("宽带连接123")
#define USER TEXT("ADSL_User")
#define PASSWORD TEXT("123456")
//创建PPPOE宽带连接
BOOL CreatePppoeConnection(LPCTSTR lpszEntry);
//设置拨号信息
void SetUserInfo(LPCTSTR lpszEntry, LPCTSTR lpszUserName, LPCTSTR lpszPassWord);
//连接宽带连接
UINT RasConnect(LPCTSTR lpszEntry, LPCTSTR lpszUserName, LPCTSTR lpszPassWord);
//调用已经创建的宽带连接拨号
bool RasConnect2(TCHAR szText[],TCHAR szUser[],TCHAR szPasswd[]);
int main(void)
{
//创建连接ADSL
BOOL ret=CreatePppoeConnection(ENTRY);
//设置用户信息
if(ret)
{
SetUserInfo(ENTRY, USER, PASSWORD);
RasConnect(ENTRY, USER, PASSWORD);
}
RasConnect2(TEXT("宽带连接"),TEXT("059205587400"),TEXT("044998"));
return 0;
}
//创建PPPOE宽带连接
BOOL CreatePppoeConnection( LPCTSTR lpszEntry )
{
TCHAR sMSG[256]={0};
//列举设备
RASDEVINFO *pdevinfo = new RASDEVINFO[10];
DWORD cb=10*sizeof(RASDEVINFO);
DWORD num_devices=0;
DWORD i=0;
pdevinfo[0].dwSize = sizeof(RASDEVINFO);
DWORD ret = RasEnumDevices(pdevinfo, &cb, &num_devices);
if(ret != 0 || num_devices < 1) { delete pdevinfo; return FALSE; }
for(i=0;i < num_devices;i++)
{
// MessageBox(NULL, pdevinfo[i].szDeviceType, "宽带连接",MB_OK);
if(_tcscmp(pdevinfo[i].szDeviceType,TEXT("pppoe"))==0)
break;
}
if(i >= num_devices)
{
MessageBox(NULL, TEXT("pppoe设备未找到"), TEXT("宽带连接"),MB_OK);
delete pdevinfo;
assert(false);
return FALSE;
}
//填充RASENTRY接口
RASENTRY lpRasEntry;
memset(&lpRasEntry, 0, sizeof(RASENTRY));
lpRasEntry.dwSize = sizeof(RASENTRY);
lpRasEntry.dwfOptions =RASEO_RemoteDefaultGateway | RASEO_ModemLights | RASEO_IpHeaderCompression | RASEO_SwCompression | RASEO_NetworkLogon;
lpRasEntry.dwfOptions =RASEO_SpecificNameServers | RASEO_RemoteDefaultGateway |RASEO_PreviewUserPw;
lpRasEntry.dwfNetProtocols = RASNP_Ip; //TCPIP协议
lpRasEntry.dwFramingProtocol = RASFP_Ppp; //PPP方式
_tcscpy(lpRasEntry.szDeviceType, pdevinfo[i].szDeviceType);
_tcscpy(lpRasEntry.szDeviceName, pdevinfo[i].szDeviceName);
_tcscpy(lpRasEntry.szLocalPhoneNumber,TEXT(""));
ret = RasSetEntryProperties(NULL,lpszEntry,&lpRasEntry,sizeof(RASENTRY),NULL,0);
delete pdevinfo;
if(ret != 0)
{
MessageBox(NULL,TEXT("pppoe设备未找到"), TEXT("宽带连接"),MB_OK);
assert(false);
return FALSE;
}
return TRUE;
/*
RASEO_PreviewUserPw //显示用户名和密码对话框
RASEO_SpecificIpAddr //指定IP地址拨号
*/
}
//设置拨号信息
void SetUserInfo( LPCTSTR lpszEntry, LPCTSTR lpszUserName, LPCTSTR lpszPassWord )
{
RASDIALPARAMS rdParams; //拨号连接的信息
ZeroMemory(&rdParams, sizeof(RASDIALPARAMS));
rdParams.dwSize = sizeof(RASDIALPARAMS);
_tcscpy(rdParams.szEntryName, lpszEntry);
_tcscpy(rdParams.szUserName, lpszUserName);
_tcscpy(rdParams.szPassword, lpszPassWord);
RasSetEntryDialParams(NULL,&rdParams,FALSE);
return;
}
//连接宽带连接
UINT RasConnect( LPCTSTR lpszEntry, LPCTSTR lpszUserName, LPCTSTR lpszPassWord )
{
HRASCONN hRasConn = NULL;
RASDIALPARAMS rdParams; //拨号连接的信息
ZeroMemory(&rdParams, sizeof(RASDIALPARAMS));
rdParams.dwSize = sizeof(RASDIALPARAMS);
lstrcpy(rdParams.szEntryName, lpszEntry);
lstrcpy(rdParams.szUserName, lpszUserName);
lstrcpy(rdParams.szPassword, lpszPassWord);
DWORD dwRet;
dwRet = ::RasDial(NULL, NULL, &rdParams, 0L, NULL , &hRasConn); //如果函数成功,则返回0
if (dwRet)
{
TCHAR szErroInfo[256]={0};
_sntprintf_s(szErroInfo,ARRAYSIZE(szErroInfo),TEXT("%d连接错误!\n"),dwRet);
TCHAR szBuf[256] ={0};
RasGetErrorString((UINT)dwRet,szBuf, ARRAYSIZE(szBuf));
_tcscat(szErroInfo,szBuf);
MessageBox(NULL, szErroInfo, TEXT("宽带连接"),MB_OK);
assert(false);
return false;
}
return true;
}
bool RasConnect2( TCHAR szText[],TCHAR szUser[],TCHAR szPasswd[])
{
// 同步调用方式
RASDIALPARAMS RasDialParams={0};
// 总是设置dwSize 为RASDIALPARAMS结构的大小
RasDialParams.dwSize = sizeof(RASDIALPARAMS);
HRASCONN hRasConn = NULL;
lstrcpy(RasDialParams.szEntryName, szText);
lstrcpy(RasDialParams.szUserName, szUser);
lstrcpy(RasDialParams.szPassword, szPasswd);
// 同步方式调用RasDial(第五个参数为NULL)
DWORD Ret = RasDial(NULL, NULL, &RasDialParams, 0, NULL, &hRasConn);
if (Ret != 0)
{
printf("RasDial失败: Error = %d\n", Ret);
assert(false);
return false;
}
// 获取连接状态
RASCONNSTATUS RasStatus;
RasStatus.dwSize = sizeof (RASCONNSTATUS);
DWORD dwReturn = RasGetConnectStatus (hRasConn, &RasStatus);
if (dwReturn)
{
printf("RasGetConnectStatus失败: Error = %d\n", dwReturn);
assert(false);
return false;
}
else if (dwReturn==0)
{
printf("连接成功\n");
}
//断开连接
//RasHangUp(hRasConn);
return true;
}
Ras拨号程序编写
最新推荐文章于 2017-10-25 09:37:18 发布