سؤال

أبحث عن وظيفة من شأنها أن تعطيني IP الحقيقي، وليس الملكية الفكرية المحلية الخاصة بي. تقوم الوظيفة التي لدي بها حاليا، إرجاع IP في مركز الشبكة والمشاركة 192.168.2.100 ولكن إذا ذهبت إلى Whatismyip، فهذا يعطي IP الخاص بي.

كيف يمكنني الحصول على هذا باستخدام vb.net؟ شكرا

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

المحلول

لا توجد طريقة للقيام بذلك فقط مع vb.net. تحتاج إلى العثور على موقع ويب سيخبرك (ربما واحدة من خاصة بك؟) أو تحتاج إلى واجهة مع جهاز التوجيه الخاص بك.

إذا كان لديك موقع ويب قادر على تشغيل أي نوع من تطبيقات صفحة الويب، فيمكنك إنشاء صفحة ويب تقوم ببساطة بإخراج عنوان IP للعميل (كما هو الحال في الكمبيوتر المتصل بالصفحة).

لدي واحدة من بلدي:

http://etoys.netortech.com/devpages/ip.asp.

على الرغم من أنني لا أستطيع ضمان أنه سيكون هناك دائما هناك هو السبب في أنه يجب عليك أن تجعل بنفسك.

من هناك مسألة بسيطة لاستخدام httpwebrequest. لتنزيل محتوى الصفحة.

نصائح أخرى

للجمع بين الإجابات أعلاه "إنشاء ملف PHP ولصق هذا في ذلك:

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

احفظه كحاولة Curip.php وتحميله على الخادم الخاص بك.

في مشروع VB.NET الخاص بك إنشاء وحدة نمطية. أعلن قسم الواردات في الأعلى

Imports System.Net
Imports System.IO

وإنشاء وظيفتك:

    Public Function GetIP() As String

    Dim uri_val As New Uri("http://yourdomain.com/curip.php")
    Dim request As HttpWebRequest = HttpWebRequest.Create(uri_val)

    request.Method = WebRequestMethods.Http.Get

    Dim response As HttpWebResponse = request.GetResponse()
    Dim reader As New StreamReader(response.GetResponseStream())
    Dim myIP As String = reader.ReadToEnd()

    response.Close()

    Return myIP
End Function

الآن في أي مكان في الكود الخاص بك يمكنك إصدار

Dim myIP = GetIP()

كما استخدم القيمة من هناك كما يحلو لك.

ربما أكون موجودا فقط هنا، لكنني لا أستطيع أن أساعد ولكن أعتقد أن عنوان IP "الحقيقي" هو الذي تم إرجاعه بواسطة IFConfig (ipconfig) على جهازك المحلي. 192.168.2.100 في قضيتك. أيا كان الترجمة الناتجة أو النفق بينك وبين نقطة النهاية عن بعد يجب ألا يهم، وإذا حدث ذلك، فهناك فرصة جيدة، فأنت تفعل شيئا يمكن أن يجعل تطبيقك يعمل فقط في بيئتك الحالية.

كنت أستخدم موقعا متاحا عاما يعيد عنوان IP الخاص بك استجابة.

العوامل الرئيسية هنا هي:

  1. توافر الخدمة. يضمن تشغيل الخدمة الخاصة بك التحكم الكامل في الأمر ومعرفته عند توفره وعندما لم يكن كذلك. ولكن في بعض الحالات قد يكون الأمر مجرد عمل كبير لهذه المهمة البسيطة.
  2. تقليل الفوضى الإضافية الواردة في الاستجابة. هناك العديد من المواقع مما يسمح لك بالحصول على عنوان IP العام الخاص بك، لكنها غالبا ما تفعل ذلك في شكل صفحة HTML. قد يحتاج استخراج جزء صغير من الصفحة التي تحتوي على عنوان IP إلى رمز إضافي.

مع الأخذ في الاعتبار هذين العاملين أوصي بهذا URL http://wtfismyip.com/Text. لديها ميزة العودة فقط عنوان IP في شكل نصي. هناك أيضا إصدارات من أجل:

اختر التنسيق الأسهل بالنسبة لك لتحليله.

لا تحتاج إلى استخدام ملف PHP فقط استخدم موقعا يعرض IP الخاص بك مثل IP-Adress.com ثم احصل على IP من هناك باستخدام WebRequest ثم استخدمه الحصول على ما بين وظيفة.

استمتع :)

باستخدام PHP يمكن القيام به ببساطة:

كما شارك "Shaiss" رمز PHP، فهذا هو رمز VB.NET:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim myip As HttpWebRequest = HttpWebRequest.Create("http://YourHosting.com/curip.php")
        Dim grab As HttpWebResponse = myip.GetResponse()
        Dim stream As Stream = grab.GetResponseStream

        Dim SR As New StreamReader(stream)
        TextBox1.Text = SR.ReadToEnd()
    End Sub
End Class

هذا هو مجرد مثال مع:

1 - نموذج

1 - TextBox.

1 - زر (زر)

أتمنى أن يساعدك هذا!

كان لدي نفس السؤال وفتشت قليلا فقط لتذكر أنه يمكنني القيام بذلك مع WebBrowser!

Private Sub getExtIP() Handles activeProjectsWB.DocumentCompleted
    If gotIP = False And populateProjectCollectionBLN = True Then
        If activeProjectsWB.ReadyState = WebBrowserReadyState.Interactive Or activeProjectsWB.ReadyState = WebBrowserReadyState.Complete Then
            Dim unformattedExtIP As String = activeProjectsWB.Document.GetElementsByTagName("title").Item(0).OuterHtml
            Dim onlyIPAddress As String = String.Empty
            For Each character In unformattedExtIP
                Dim result As Integer = 0
                If Not (Integer.TryParse(character, result) = 0) Or character = "." Then
                    onlyIPAddress = onlyIPAddress & character
                End If
            Next
            extIP = onlyIPAddress
            gotIP = True
        End If
    End If
End Sub

يتم تشغيل هذا الروتين الفرعي فقط عند الانتقال إلى صفحة ويب باستخدام WebBrowser.Navigate().

ال gotIP Boolean موجود لأن لدي روتين فرعي آخر ينشط على أي استغلال مستندات. لا أريد أن أشعل الأمر أكثر من مرة. إذا كنت غير مألوف WebBrowser, ، يمكنك التحقق للتأكد من تحميل صفحة الويب بما فيه الكفاية ReadyState. وبعد إذا لم تفعل ذلك، فقد تحصل على استثناء (نظرا لأنه لم يتم تحميل المحتوى).

يمكنك استخدام أي موقع تريده. هذا الموقع جيد لأنه يضع عنوان IP الخاص بك في العنوان. هذا جيد لأنه سيكون هناك واحد title بطاقة شعار. في حالة عدم استخدام هذا الموقع (أو واحد يحتوي على علامة فريدة من نوعها مع المحتوى الخاص بك داخلها)، استخدم أ For Each حلقه.

                For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
                    'do something to find the tag that contains your IP address
                Next
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top