الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الاجابة ] كيف يمكن الحصول علي اسماء الاجهزة علي الشبكة

بدأه hay3am في 27 فبراير 2010 · 4 رد · 1,264 مشاهدة · في برمجة الشبكات والتطبيقات الموزعة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف يمكن الحصول علي اسماء الاجهزة علي الشبكة وارقام ال ip الخاص بكل جهاز

تم تعديل هذه المشاركة بواسطة hay3am في 27 فبراير 2010 في 13:13

[moveright]Haytham [/moveright]

#2

وعليك السلام اخي الكريم

قمنا بمناشة هذا الموضوع مسبقا ويوجد له عدة حلول اسهلها تحديد الـSubnet لشبكة الحالية والأي بي ثم تقوم بعمل برنامج Ping ترسل لكل اي بي على التوالي والذي يرجع منها Replay يوضع في List خاصة ولجلب الأسم يمكن ذلك من خلال دالة GetHostName By IP في الـDNS راجع المواضيع المثبتة في القسم

بالتوفيق

#3

جزاك الله خيراً اخ فادي

لقد قمت بالبحث بالفعل ولكن لم استطع الوصول

وسوف اطلع علي الموضوعات المثبتة كما ذكرت

وشكرا اخ فادي للمرة الثانية

[moveright]Haytham [/moveright]

#4

السلام عليكم ورحمة الله وبركاته ........................

#Region "Declarations"

    Private Declare Unicode Function NetServerEnum Lib "netapi32" _
    (ByVal Servername As IntPtr, _
    ByVal Level As Integer, _
    ByRef bufptr As IntPtr, _
    ByVal PrefMaxLen As Integer, _
    ByRef entriesread As Integer, _
    ByRef TotalEntries As Integer, _
    ByVal serverType As Integer, _
    ByVal Domain As IntPtr, _
    ByVal ResumeHandle As IntPtr) As Integer

    Declare Unicode Function NetApiBufferFree Lib "netapi32.dll" _
    (ByRef buffer As IntPtr) As Long

    Public Structure _SERVER_INFO_100
        Friend sv100_platform_id As Integer
        <MarshalAs(UnmanagedType.LPWStr)> _
        Friend sv100_name As String
    End Structure

#End Region

#Region "Get network computers"
    Public Function GetNetworkComputers() As ArrayList
        Dim networkComputers As New ArrayList()
        Const MAX_PREFERRED_LENGTH As Integer = -1
        Dim SV_TYPE_WORKSTATION As Integer = 1
        Dim SV_TYPE_SERVER As Integer = 2
        Dim buffer As IntPtr = IntPtr.Zero
        Dim tmpBuffer As IntPtr = IntPtr.Zero

        Dim entriesRead As Integer = 0
        Dim totalEntries As Integer = 0
        Dim resHandle As Integer = 0
        Dim sizeofINFO As Integer = Marshal.SizeOf(GetType(_SERVER_INFO_100))

        Try
            Dim ret As Integer = NetServerEnum(Nothing, 100, buffer, MAX_PREFERRED_LENGTH, entriesRead, totalEntries, _
                                               SV_TYPE_WORKSTATION Or SV_TYPE_SERVER, Nothing, resHandle)

            If ret = 0 Then
                For i As Integer = 0 To totalEntries
                    tmpBuffer = New IntPtr(CType(buffer, Integer) + (i * sizeofINFO))
                    Dim svrInfo As _SERVER_INFO_100 = CType(Marshal.PtrToStructure(tmpBuffer, _
                                                            GetType(_SERVER_INFO_100)), _SERVER_INFO_100)

                    networkComputers.Add(svrInfo.sv100_name)
                Next
            End If
        Catch ex As Exception
            Console.WriteLine("Error getting network computers.")
        Finally
            NetApiBufferFree(buffer)
        End Try

        Return networkComputers
    End Function
#End Region

' Example Usage
Dim networkComps As ArrayList = GetNetworkComputers()
For Each Str As String In networkComps
    Console.WriteLine(Str)
Next

منقول من هنــــــــــــــــــــــــــــــا :happy:

#5

كلام جميل جزاكم الله خيرا كنت أبحث عنه من فترة

لكن أنا عندي خصوصية في مشروعي في هذه النقطة .

عندي client application and server applicalion

أريد من خلال عملية ping أن ترجعلي فقط الأجهرة التي عليها client application و ليس كل الأجهزة في الشبكة ...

أنتظر رد كم و لكم مني جزيل الشكر و عظيم الإمتنانا

مواضيع مشابهة