PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اتصال اتوماتیک به اینترنت با c++



uody
7th April 2011, 03:43 PM
اتصال اتوماتیک به اینترنت با c++

برنامه ای ساده که یوزر و پسورد و شماره تلفن بگیره و خودش شروع کنه به اینترنت وصل بشه. اول که باید یه پروژه جدید بسازید و ۳ تا edit box برای اطلاعات یوزر و پسورد و شماره تلفن.
اولین کاری که باید کنید اینه که ۱-۲ کلاس رو به پروژه اضافه کنید که با ۲خط زیر انجام میدید:


#include "ras.h"
#include "raserror.h"
حالا ۲ تا دکمه بگذارید برای وصل شدن و قطع ارتباط.
برای وصل شدن از چند خط ساده زیر استفاده کنید که هر خط رو جداگانه توضیح میدم:


RASDIALPARAMS rdParams;//

متغییری(شئی) است برای دادن اطلاعات مورد نیاز برای کانکت به اینترنت




rdParams.dwSize = sizeof(RASDIALPARAMS);
rdParams.szEntryName[0] = ''0'';
lstrcpy( rdParams.szPhoneNumber, m_strPhoneNumber );
/در این قسمت شماره تلفن را مقدار دهی میکنیم



rdParams.szCallbackNumber[0] = ''0'';
lstrcpy( rdParams.szUserName, m_strUserName );//


در این قسمت یوزررا مقدار دهی میکنیم


lstrcpy( rdParams.szPassword, m_strPassword );//
در این قسمت پسورد را مقدار دهی میکنیم



rdParams.szDomain[0] = ''0'';





HRASCONN hRasConn = NULL;//



این متغییر برای نسبت دادن یک هندل به این کانکشن در صورت موفقیت خوهد بود که بتوان در آینده از آن استفاده کرد مثلا آنرا قطع کرد



DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );//


در این قسمت شروع به شماره گیری میکند و نتیجه شماره گیری بازگردانده می شود که در صورت موفقیت صفر و در غیر این صورت شماره خطلا خواهد بود



if ( dwRet == 0 ) return true;
char szBuf[256];
if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )//
اگر منجر به خطا شد با استفاده از شماره خطا متن خطا را بدست آمرده نمایش می دهیم و کانکشن را می بندیم



wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet );
RasHangUp( hRasConn );
MessageBox( (LPSTR)szBuf, "Error", MB_OK | MB_ICONSTOP );
return false;
تا ایجا نحوه خیلی ساده اتصال رو دیدیم. حالا باید در صورت نیاز امکان قطع کردن رو هم فراهم کنیم که اونم به سادگی کد زیر هستش:


RASCONN ras[20];
DWORD dSize, dNumber;
char szBuf[256];

connected=false;
ras[0].dwSize = sizeof( RASCONN );
dSize = sizeof( ras ); // Get active RAS - Connection
DWORD dwRet = RasEnumConnections( ras, &dSize, &dNumber );
if ( dwRet != 0 )
{
if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
wsprintf( (LPSTR)szBuf, "Undefined RAS Enum Connections error (%ld).", dwRet );
MessageBox( (LPSTR)szBuf, "RasHangUp", MB_OK | MB_ICONSTOP );
return false;
}
bool bOK = true;
for( DWORD dCount = 0; dCount < dNumber; dCount++ )
{ // Hang up that connection
HRASCONN hRasConn = ras[dCount].hrasconn;
DWORD dwRet = RasHangUp( hRasConn );
if ( dwRet != 0 )
{
char szBuf[256];
if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
wsprintf( (LPSTR)szBuf, "Undefined RAS HangUp Error (%ld).", dwRet );
MessageBox( (LPSTR)szBuf, "RasHangUp", MB_OK | MB_ICONSTOP );
bOK = false;
}
}
return bOK;
با این ۲ تابع ساده میتونید به اینترنت متصل شید. اما نکاتی که هست اینه که :
اولا اصلا کانکشن ویندوزی ساخته نمیشه.
دوماً اینکه ایکون اتصال هم نمایش داده نمیشه و دست شمارو باز میگذاره که هرجور دوست دارید اعمال سلیقه کنید.

منبع:sem-eng.com

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد