PDA

View Full Version : سوال: چگونه مودم های یک سیستم را بدست آورم



sayan
سه شنبه 16 خرداد 1391, 08:01 صبح
سلام دوستان من نیاز دارم یه برنامه برای اتصال به اینترنت بنویسیم .
میخواستم لیست مودم های یک سیستم بدست بیارم و توسط api ras یک کانکشن درست کنم.
کسی میتونه راهنمایی کنه ؟
باتشکر.

ahmadreza517
سه شنبه 16 خرداد 1391, 11:39 صبح
به نام تنها برنامه نویس هستی
سلام

ببین کارت را می ندازه

sayan
چهارشنبه 17 خرداد 1391, 06:53 صبح
مرسی دوست عزیز کد شما لیست مودم ها رو میده
ولی نمیدونم چطور به تابع Ras Api مودم پیش فرض انتساب بدم.

ahmadreza517
چهارشنبه 17 خرداد 1391, 08:24 صبح
سلام دوباره
اینو ببین
http://www.dotnet247.com/247reference/msgs/18/91263.aspx

تو اینترنت سرچ کن حتما خودت جوابو پیدا می کنی.

sayan
چهارشنبه 17 خرداد 1391, 18:27 عصر
تو اینترنت خیلی سرچ کردم ولی ندیدم (شاید هم نفهمیدم) توسط چه کدی میتوانم مودم پیش فرض برای این تابع تنظیم کنم.
بازم مرسی از اطلاعات شما.

sayan
جمعه 26 خرداد 1391, 11:03 صبح
آیا جدا از بجث Ras api
با توجه به این کدی که شما دادید
راه حلی وجود دارد که مودم های موجود در یک سیستم را چک کرد و فهمید کدوم آزاده کدوم مشغول ؟

Saeed_m_Farid
یک شنبه 28 خرداد 1391, 13:38 عصر
آیا جدا از بجث Ras api
با توجه به این کدی که شما دادید
راه حلی وجود دارد که مودم های موجود در یک سیستم را چک کرد و فهمید کدوم آزاده کدوم مشغول ؟
منظورتون از Ras api چی هست؟ من که ندیدم Wrapper ای برای RAS تو #C نوشته شده باشه! میشه یه نمونه کد از کارهایی که کردین بزارین؟
تا اونجایی که من میدونم RAS API شامل دو سه تا تابع مزخرف بود که با زبانهای native کار میکردن و کلاً منسوخ شد رفت! (البته RasAPI32.dll هست ولی زحمت تمام کارهاش رو خودتون باید بکشید و با Exception های احتمالی دست و پنجه نرم کنید: مثلاً [1] (http://www.pcmmc.com/rasapi32-dll-c.php) و [2] (http://pcsupport.about.com/od/findbyerrormessage/a/rasapi32-dll-not-found-missing-error.htm) و ... (http://www.google.com/#hl=fa&q=RasAPI32+exception&oq=RasAPI32+exception&aq=f&aqi=&aql=&gs_l=serp.3...14016.16343.0.16602.0.0.0.0.0.0.0.0. .0.0...0.0.Qciq-DcITxA&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=73c390a44bc646a&biw=1440&bih=771)) الان WinINet (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383630%28v=vs.85%29.aspx) یه کتابخانه کامل از توابع (http://msdn.microsoft.com/en-us/library/windows/desktop/aa385473%28v=vs.85%29.aspx) داره که قسمتی اش مربوط به RAS هست و درسته به زبان C هست ولی کلی واسش wrapper و مثال نوشته شده و یه مجموعه کاملاً غنی هست ...
میخوام وقت بذارم و چند تا نکته مهم (و جالب) که بنظرم میرسه رو جهت اطلاع شما و کسانی که بعداً مراجعه میکنن بگم، ولی حوصله داشته باشین و بخونینشون، چون حاصل یه مدت تجربه هستن و ممکنه کمک کنن شما همه راه ها رو از اول نرید:


اون چیزی که شما بهش میگین مودم! در اصل بنام Plain Old Telephone System Modem Devices یا بطور خلاصه POTS Modem شناخته میشه؛ شاید احساس کنین که من دارم گیر سه پیچ میدم ولی چون شما برنامه نویس هستین و به چنین مواردی برمیخورین:
تو اینترنت خیلی سرچ کردم ولی ندیدم (شاید هم نفهمیدم) توسط چه کدی میتوانم مودم پیش فرض برای این تابع تنظیم کنم. پس نباید مثل سبزی فروش محلتون با تکنولوژی برخورد کنین؛ برای نمونه شما می تونین از پلت فرم WMI (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582%28v=vs.85%29.aspx) و در اینمورد بخصوص، کلاس Win32_POTSModem (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394360%28v=vs.85%29.aspx) استفاده کنین و لیست مودم ها رو بدست بیارین (مثل همون مثالی که ahmadreza517 (http://barnamenevis.org/member.php?219397-ahmadreza517) تو پست (http://barnamenevis.org/showthread.php?344671-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%D9%88%D8%AF%D9%85-%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B1%D8%A7-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D9%85&p=1520048&viewfull=1#post1520048) شون ضمیمه کردن) ولی بشرطی می تونید همچین کدی رو خودتون تو اینترنت پیدا کنید که بدونین به اون مودم ها میگن : POTS Modem ... ضمناً یه نمونه خیلی کامل برای کار با پلت فرم WMI رو می تونید اینجا ببینید: How To Almost Everything In WMI (http://www.codeproject.com/Articles/18268/How-To-Almost-Everything-In-WMI-via-C-Part-3-Hardw)
فکر کنم خیلی از شماها هنوز از قدرت WMI و کارهایی که می تونه براتون انجام بده اطلاع ندارین! یه ابزار هست بنام Management Strongly Typed Class Generator (http://msdn.microsoft.com/en-us/library/2wkebaxa.aspx) که تو SDK مایکروسافت هست؛ در فایلی به نام Mgmtclassgen.exe که با اون می تونید کدهای اتوماتیک برای کلاس موردنظرتون در WMI ایجاد کنید! مثلاً برای همین Win32_POTSModem (http://msdn.microsoft.com/en-us/library/windows/desktop/aa394360%28v=vs.85%29.aspx) نحوه کاربردش (در سیستم من با دات نت 4.0) میشه خط فرمان زیر: "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\mgmtclassgen.exe" Win32_POTSModem /L CS /P D:\Win32_POTSModem.cs بعد اجرای موفق خط بالا تو cmd (http://en.wikipedia.org/wiki/Command_Prompt)؛ اگه فایل D:\Win32_POTSModem.cs رو باز کنید، به احتمال بسیار زیاد کفِ تون ببره که دات نت چه کارهایی می تونست انجام بده و شما نمی دونستین :( حالا namespace اون (ROOT.CIMV2.Win32) رو به پروژتون اضافه کنید و با این دستور کل مودم های POTS با مشخصاتش رو ببینید : foreach (POTSModem modem in POTSModem.GetInstances()) {
Console.WriteLine(modem.Description);
البته این ابزار زحمت 2390 خط کد رو برای شما کشیده که صدها متد و کلاس مفید توش هست ...
توجه داشته باشید که توابع WMI صرفاً جهت کوئری های اطلاعاتی هستن و شما نمی تونید کارهای عملیاتی (مثل کارایی که بقول شما تو RAS API میشه انجام داد) باهاشون پیاده کنید؛ مثل دیتابیس! پس بهتره قضیه گرفتن لیست مودمها و ... رو با کارهای عملیاتی جدا کنید.
یکی از معتبرترین Provider هایی که برای RAS در دات نت نوشته شده، DotRas (http://dotras.codeplex.com/) از codeplex (http://www.codeplex.com/) هست؛ این مجموعه رو بگیرین و برای یک عمر خیالتون رو از سر و کله زدن با پیچیدگی های این مباحث راحت کنید :
For Use

Microsoft .NET Framework v2.0.50727
Microsoft .NET Framework v4.0.30319

For Development



Microsoft Visual Studio 2010*
Microsoft .NET Framework v4.0*
Microsoft StyleCop*
Microsoft Windows Installer XML
Microsoft Sandcastle
Sandcastle Help File Builder


Completed API List (http://dotras.codeplex.com/wikipage?title=Completed%20API%20List&referringTitle=Documentation)
Compilation Instructions (http://dotras.codeplex.com/wikipage?title=Compilation%20Instructions&referringTitle=Documentation)

نمونه های زیادی تو SDK که همراه مجموعه دانلود میشن هست که می تونید از مثال هاش مواردی که لازم دارین رو بردارین، ضمناً آخرین تعییرات رو یادتون نره از این آدرس (http://dotras.codeplex.com/SourceControl/list/changesets) چک کنید ...

اگه بازم چیزی یادم افتاد، بعداً اضافه میکنم، خسته شدم :لبخند:
موفق باشید

sayan
سه شنبه 30 خرداد 1391, 07:15 صبح
سلام دوست عزیز.
از این همه اطلاعات جامع همراه با مثال های فراوان که گذاشتی خیلی ممنونم.
من هم از کلاس های dotrasApi استفاده میکنم.
ولی با قابلیت های WinINet اصلاً آشنا نبودم.
حیف بود که از ارائه این همه اطلاعات مفید فقط تشکر خالی بزنم.
:تشویق: