PDA

View Full Version : اتصال به اینترنت در سی شارپ



m110_110
چهارشنبه 27 مرداد 1389, 23:11 عصر
سلام
من می خوام درون برنامه ام چند تا شماره از کاربر بگیریم و بتوانم با استفاده از اون ها به اینترنت وصل بشم
تا حالا توانستم که از کانکشن هایی که کاربر در ویندوز ایجاد کرده استفاده کنم و به اینترنت متصل بشم اما نمی توانم از این روش استفاده کنم چون به ازای هر چند تا کانکشن که می خوام باید درون ویندوز کاربر کانکشن درست کنم و از اون ها استفاده کنم که کار معقولی برام به حساب نمیاد در واقع خواست سفارش دهنده این هست که برنامه مستقل از کانکشن های ویندوز باشه و بتونه از شماره هایی که کاربر به هر تعداد می دهد در زمان های مختلف استفاده کنه
در ضمن منظورم کانکشن از نوع dailup است
ممنون میشم کمکم کنید

ricky22
چهارشنبه 27 مرداد 1389, 23:16 عصر
از RasAPI32 استفاده کنید.
[System.Runtime.InteropServices.DllImport(
"rasapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern System.UInt32 RasDial(
[System.Runtime.InteropServices.In] RasDialExtensions lpRasDialExtensions,
[System.Runtime.InteropServices.In] System.String lpszPhonebook,
[System.Runtime.InteropServices.In] RasDialParams lpRasDialParams,
System.UInt32 dwNotifierType,
System.Delegate lpvNotifier,
ref System.IntPtr lphRasConn
);


[System.Runtime.InteropServices.StructLayout(
System.Runtime.InteropServices.LayoutKind.Sequenti al,
CharSet = System.Runtime.InteropServices.CharSet.Auto)]
internal class RasDialParams
{
public System.Int32 dwSize =
System.Runtime.InteropServices.Marshal.SizeOf(type of(RasDialParams));
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = RAS_MaxEntryName + 1)]
public System.String szEntryName = null;
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = RAS_MaxPhoneNumber + 1)]
public System.String szPhoneNumber = null;
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = RAS_MaxCallbackNumber + 1)]
public System.String szCallbackNumber = null;
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = MaxUser + 1)]
public System.String szUserName = null;
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = MaxPassword + 1)]
public System.String szPassword = null;
[System.Runtime.InteropServices.MarshalAs(
System.Runtime.InteropServices.UnmanagedType.ByVal TStr,
SizeConst = MaxDomain + 1)]
public System.String szDomain = null;
public System.Int32 dwSubEntry = 0;
public System.Int32 dwCallbackId = 0;
}

[System.Runtime.InteropServices.StructLayout(
System.Runtime.InteropServices.LayoutKind.Sequenti al)]
internal class RasDialExtensions
{
public readonly System.Int32 dwSize =
System.Runtime.InteropServices.Marshal.SizeOf(type of(RasDialExtensions));
public System.UInt32 dwfOptions = 0;
public System.Int32 hwndParent = 0;
public System.Int32 reserved = 0;
public System.Int32 reserved1 = 0;
public RasEapInfo RasEapInfo = new RasEapInfo();
}

public void Connect()
{
// Define the dial parameters
RasDialParams parms = new RasDialParams();
parms.szDomain = this.Domain;
parms.szUserName = this.UserName;
parms.szPassword = this.Password;
parms.szEntryName = this.PhonebookEntry;

System.UInt32 retVal =
RasDial(null, null, dialParms, 0, null, ref RasConnectionHandle);

}
http://www.eggheadcafe.com/community/aspnet/2/10044479/how-to-create-dialup-connection-and-broadband-connection-in-my-c-window-application.aspx
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/c2c1a26a-61b2-4b52-b6dc-c3a3efa5ceb6

flash118
پنج شنبه 28 مرداد 1389, 03:27 صبح
سلام منم به نوبه خودم تو اين ماه آرزوي قبولي عبادات و طاعت براي دوستاي برنامه نويس دارم منم با گفته هاي دوستمون آقاي ricky22 (http://barnamenevis.org/forum/member.php?u=44714) موافقم و منم از همين روش استفاده كردم اما دوست خوبم من به يه روش ديال كردم كه با استفاده از API هست رو مي زارم البته فقط براي برقراري تماس هست ما بقيشو خودت بايد بدي مثل دادن يوزر و پس به سيروريس DIALUP اميدوارم بدردت بخوره

add Reference Microsoft.TAPI32
TAPI32Lib.RequestMakeCall rmc = new TAPI32Lib.RequestMakeCall ();
rmc.MakeCall("Home","09149.....","0","none");

m110_110
پنج شنبه 28 مرداد 1389, 08:19 صبح
با سلام
خیلی ممنون از جوابتون
انشاالله عبادات و طاعات شما هم در این ماه مبارک مورد قبول خداوند واقع شود
خدا بخواد امشب ازمایشش می کنم
واقعا ممنون

m110_110
شنبه 30 مرداد 1389, 05:17 صبح
باز هم سلام
کد اولی که پر از error هست و هر کاری کردم نتونستم error هاش رو رفع کنم

يه روش ديال كردم كه با استفاده از API هست رو مي زارم البته فقط براي برقراري تماس هست
ممنون از شما دوست عزیز ولی میشه بگید چطور Microsoft.TAPI32 رو می تونم add کنم البته این رو هم بگویم که دارم با vs2005 برنامه رو می نویسم فعلا ؛ نمی دونم ربطی داره یا نه ولی من نتونستم از کد شما استفاده کنم
ممنون میشم اگر امکانش باشه به صورت یک برنامه کوچک کمکم کنید
خسته شدم از بس کدهای مختلف رو امتحان کردم و همچنان سردرگم

Saeed.Masoumi
شنبه 30 مرداد 1389, 15:41 عصر
سلام
راه اصلیش همونه که ricky22 گفت امایکراهدیگههم هست یکم راحتتر.
شما یک کانکشن بساز مثلا با اسم MyConnection سپس با استفاده از دستور زیر به اون کانکشن متصل شو:


rasdial "MyConnection" Username Password /PHONE phone_number
برای دیسکانکت کردن هم:


rasdial /disconnect
اینایی که گفتم دستورات خود ویندوز است.برای اجرای باید از این کد استفاده کنید:


using System.Diagnostics;

Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "rasdial";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = "\"MyConnection\" Username Password /PHONE phone_number";
myProcess.Start();

m110_110
شنبه 30 مرداد 1389, 18:01 عصر
سلام
ممنون ولي اين راه رو قبلا استفاده كردم ولي در حال حاضر دنبال يه راه ديگه هستم كه بتونم خودم مستقيما از داخل برنامه با هر شماره و يوزر و پسوردي كه كاربر بهم مي ده و ممكن هست بيش از 2 تا باشه بتونم با اينترنت ارتباط برقرار كنم
مي دونم كد اولي بهتره ولي همونطور كه گفتم ارور داره و من نتونستم برطرف كنم
اگه اون كد اولي رو كسي در غالب يه برنامه ساده بزاره ممنون ميشم
بازهم ممنون از همه

m110_110
یک شنبه 31 مرداد 1389, 10:25 صبح
باز هم سلام
کسي تا به حال چنين کاري نکرده که برنامه اش مستقل از کانکشن هاي کاربر در ويندوز باشه؟؟؟؟؟؟

m110_110
سه شنبه 02 شهریور 1389, 15:16 عصر
سلام

شما یک کانکشن بساز مثلا با اسم MyConnection سپس با استفاده از دستور زیر به اون کانکشن متصل شو:


کد:
rasdial "MyConnection" Username Password /PHONE phone_number



این کد را هم امتحان کردم اما وقتی که پارامتر های username و pass و شماره رو میارم اجرا نمیشه و فقط می تونم اسم کانکشن رو صدا بزنم که خوب اجرا میشه
ولی اگر بشه شماره تلفن و username و pass رو خودمون توی برنامه بدهیم خیلی عالی می شد
در واقع کاری که از اول دنبالش بودم
از کد دوست خوبم flash118 هم که نتونستم استفاده کنم
ممنون میشم یکی کمک کنه
تا حالا وقت زیادی ازم گرفته

aradrobo
جمعه 01 دی 1391, 21:29 عصر
سلام
راه اصلیش همونه که ricky22 گفت امایکراهدیگههم هست یکم راحتتر.
شما یک کانکشن بساز مثلا با اسم MyConnection سپس با استفاده از دستور زیر به اون کانکشن متصل شو:


rasdial "MyConnection" Username Password /PHONE phone_number
برای دیسکانکت کردن هم:


rasdial /disconnect
اینایی که گفتم دستورات خود ویندوز است.برای اجرای باید از این کد استفاده کنید:


using System.Diagnostics;

Process myProcess = new Process();
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "rasdial";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = "\"MyConnection\" Username Password /PHONE phone_number";
myProcess.Start();








نمی شود . راهنمایی کنید

bazikadeh
شنبه 16 شهریور 1392, 16:28 عصر
کسی نبود توضیح کامل بده ؟

bazikadeh
شنبه 16 شهریور 1392, 16:44 عصر
خدایش فقط من قطع و وصل adsl رو مشکل دارم واسه پروژم