__
مقاله
شماره گیری DialUp با ++C
9 تیر 87 - 11:19
  ( 2 راي   ،   10 امتیاز )
امتياز :

امروز میخوایم یه برنامه ساده بنویسم که یوزر و پسورد و شماره تلفن بگیره و خودش شروع کنه به اینترنت وصل بشه.

اول که باید یه پروژه جدید بسازید و ۳ تا 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;

با این ۲ تابع ساده میتونید به اینترنت متصل شید. اما نکاتی که هست اینه که :

اولا اصلا کانکشن ویندوزی ساخته نمیشه.

دوماً اینکه ایکون اتصال هم نمایش داده نمیشه و دست شمارو باز میگذاره که هرجور دوست دارید اعمال سلیقه کنید.

رامین حبیبی

امتياز دهيد :
__