الاتصال بين 2 كمبيوتر عبر مودم الاتصال دون الإنترنت في C#

StackOverflow https://stackoverflow.com/questions/3660119

  •  01-10-2019
  •  | 
  •  

سؤال

مرحبًا ، هل هناك أي طريقة للاتصال بأجهزة الكمبيوتر عبر مودم الطلب بدون الإنترنت؟ مثل Windows Hyper Terminal. جعل الاتصال إرسال الملفات بين أجهزة الكمبيوتر. مجرد الاتصال بين جهاز كمبيوتر مباشرة وإرسال الملف.

هل كانت مفيدة؟

المحلول

نعم.

على افتراض أن المودم متصلة عبر منفذ تسلسلي (أو محاكاة يتم توصيلها عبر منفذ تسلسلي): ستحتاج إلى إعداد مودم واحد (تعلم الخاص بك AT الأوامر!) للاستماع والإجابة على المكالمات الواردة ، والآخر للطلب الأول.

يمكنك بعد ذلك التعامل مع الزوج كرابط تسلسلي طويل إلى حد ما.

ومع ذلك ، فإن الحصول على كل شيء على العمل بشكل موثوق أكثر من كونه فنًا أكثر من كونه علمًا ، وهو أمر نادراً ما يتم القيام به اليوم بحيث يتم نسيان الكثير منها. كانت آخر مرة عملت فيها مع المودم بهذه الطريقة منذ أكثر من خمسة عشر عامًا.

نصائح أخرى

كانت الطريقة التي اعتدنا بها على القيام بذلك في الأيام الخوالي مع كابل الفرق الفارغة. لقد اعتدنا حتى على القيام بألعاب "متصلة" بهذه الطريقة ، والعودة في اليوم.

هذا هو كابل RS-232 مع دبابيس الاستقبال ونقلها. ما زلت أرى بعض المحولات حولها ، لذلك لا ينبغي أن يكون من الصعب للغاية الحصول على واحد.

بعد ذلك بكثير ، خلق بعض الناس ينزلق (IP الخط التسلسلي) لتمكين الخط التسلسلي للعمل كحامل لكدس TCP/IP بالكامل. بعد فترة وجيزة PPP تم تقديمه كتحسن. أعتقد أن Slip لا يزال متاحًا لمعظم المنصات ، ويوجد PPP على كل منصة يمكنها القيام بالإنترنت عبر الطلب.

لذا ، إذا كان السؤال يتلخص بشكل أساسي في الرغبة في تواصل جهاز كمبيوتر عبر PPP دون أن يمر عبر خادم الطلب على شخص آخر (مثل EarthLink) ، فإن ما تحتاجه هو ذلك تثبيت خادم PPP على واحدة من الجهازين. أنها تأتي مع معظم توزيعات Linux. بالنسبة لنظام التشغيل Windows ، سيتعين عليك البحث. سأساعد ، لكن مانع الشركات الخاص بي هو أن يكون مبالغًا فيه مرة أخرى.

قام شخص ما بكتابة تطبيق XModem في C# هنا: http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodem قد يساعد في ما أنت بعد.

شيء واحد غير واضح من سؤالك هو ما إذا كنت تحاول توصيل جهازين مباشرة في نفس الموقع الفعلي مع كابل ، أو إذا كنت تحاول الاتصال بالآخر من الآخر عبر PSTN.

إذا كانوا في نفس المكان ، فافذ المودم من المعادلة. هذا يقلل من التعقيد بشكل كبير.

إذا كانت في مواقع منفصلة (أي ، الاتصال عبر اتصال الاتصال الهاتفي الصادق) ، هناك بعض التعليمات البرمجية هنا قد يساعدك ذلك. تتحدث المقالة عن مودم Bluetooth أو GPRS ، ولكن جوهره هو الإرسال في الأوامر التي يمكن استخدامها للتحدث إلى أي جهاز متوافق مع مجموعة AT-Command. قد يجعلك تسير في الاتجاه الصحيح.

تحديث

نرى http://msdn2.microsoft.com/en-us/system.io.ports.serialport(vs.80).aspx

نظرًا لأنه يجب إرفاق المودم بمنفذ COM (COM1-COM12) حتى أنه مودم داخلي ، يجب أن تكون قادرًا على استخدام فئة SerialPort الخاصة بـ .NET Framework لفتح المنفذ ، إرسال في الأوامر ، وما إلى ذلك ، بمجرد أن يكون لديك اتصال مفتوح ، يمكنك استخدام مكتبة XMODEM لنقل الملفات ، أو المسلسل المستقيم للاتصالات العادية.

هل تحتاج إلى مكدس IP ، أم أنك سعيد ببروتوكول تسلسلي مستقيم؟

يمكنك بسهولة إعداد اتصالات شبكة الاتصال الهاتفي داخل Windows والتي تتطلب استخدام المودم (تحت خيار إعداد VPN ، ولكن يمكنك تعيينه فقط للاتصال الهاتفي).

لذلك أفترض أنه يمكنك بعد ذلك تعيين موقع شبكة للاستخدام بواسطة رمز C# الخاص بك.

كما ذكرنا بالفعل ، يجب أن يكون أحد المودم على الأقل على اتصال والاستماع إلى اتصال.

* تعديل *

أعتقد أن الكود التالي سيؤدي إلى قيام اتصال الطلب الهاتفي الذي تم وضعه ضمن اتصالات الشبكة

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"c:\Local Area Connection 2 - Shortcut");

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();

للرابط الموضوعة في C: Drive وسمى "Connection Local Area 2 - اختصار"

يمكنك بعد ذلك ping الوجهة لمعرفة ما إذا كانت متصلة.

في النهاية على الرغم من أنني أعتقد أن الحل الأفضل قد يكون استخدام RAS.

إلقاء نظرة هنا على codeplex: dotras

يمكنك بعد ذلك استخدام الكود التالي:

RasDialer dialer = new RasDialer();

bool connected = false;
foreach (RasConnection connection in dialer.GetActiveConnections())
{
    if (connection.EntryName == "MyFriendsPC")
    {
        connected = true;
        break;
    }
}

if (!connected) {
    dialer.EntryName = "MyFriendsPC";
    dialer.Dial();

    // If you need to provide credentials, use the Dial(NetworkCredential) overload that's available.
}

يفترض هذا المثال أن لديك بالفعل إدخال يدعى MyFriendSpc في دفتر الهاتف الافتراضي. إذا لم تكن وتحتاج إلى إنشاء هذا الاتصال برمجيًا ، فيمكنك استخدام مكون RasphoneBook لذلك.

RasPhoneBook pbk = new RasPhoneBook();
pbk.Open(); // This will open the phone book in the All Users profile.

RasEntry entry = new RasEntry("MyFriendsPC");

إذا كنت تفضل استخدام الإعدادات الافتراضية للاتصال ، فيمكنك استخدام إحدى الطرق الثابتة في فئة Rasentry ، أو تهيئة الاتصال يدويًا هنا.

pbk.Entries.Add(entry);

بمجرد إضافة الإدخال إلى المجموعة ، سيتم إضافته على الفور إلى دفتر الهاتف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top