PDA

View Full Version : سوال: گرفتن ip تحت شبکه دامین



MOSTAFANAVVAB
شنبه 12 بهمن 1387, 15:26 عصر
با سلام

دوستان خسته نباشید در خصوص موضوع بیان شده هرچند توضیحاتی داده شده اما من فکر میکنم با این توضیحات اگر خواسته باشیم توسط یک برنامه تمامی ip سیستم هایی را که در یک شبکه دارند فعالیت می کنند بگیریم این کد ها جوابگو نباشند .

حقیقتش من در یک شرکتی کار می کنم که دارم برنامه ای می نویسم که کار فرما با دیدن آدرس ip متوجه می شود که کارمندش الان سر کار هستن.
حالا مو ندم چجوری و با چه کدی تمام آدرس ip ها رو بکشم بیرون و جالب اینجاست که تمامی سیستم هایی که به شبکه متصل هستند یک سری workgroup هستند یک سری هم تحت Domain کار میکنن حالا موندم چکار کنم

اگر دوستان برنامه یا کدی دارند خوشحالمون می کنند اگر کمک کنند

MOSTAFANAVVAB
چهارشنبه 23 بهمن 1387, 11:18 صبح
آقا پس چی شد ؟ کسی بلد نیست

MOSTAFANAVVAB
جمعه 25 بهمن 1387, 18:51 عصر
dostan man che konam

MOSTAFANAVVAB
سه شنبه 29 بهمن 1387, 08:08 صبح
ما ز یاران چشم یاری داریم

لیک می پرسیم آنچه نمی دانیم

بابا یکی جواب بده کدش خیلی سادس ها

anooshiran
سه شنبه 29 بهمن 1387, 09:04 صبح
دوست عزيز

من الان شبكه در اختيارم نيست كه اين كد رو تست كنم ولي 99 درصد درسته و كارتو راه مي اندازه.

اول بالاي فرم



Imports System.Net



و بعد يك sub درست كن و كدهاي زير را بريز داخلش



Dim LocalHostName As String
LocalHostName = Dns.GetHostName()
Dim ipHostEntry As IPHostEntry = Dns.GetHostEntry(LocalHostName)
Dim ipAddress() As IPAddress = ipHostEntry.AddressList
TextBox1.Text = ipHostEntry.AddressList.GetValue(0).ToString


اميدوارم كه بدردت بخوره

MOSTAFANAVVAB
چهارشنبه 30 بهمن 1387, 10:11 صبح
با سلام
جناب انوشیروان کد مذکور را همانطور که فرمودید تست کردم
سیستم هم یک خط جواب داد آن هم این بود
fe80::d8dd:5074:5cc7:5c2b%11

یک مسئله که یقین دارم باید باشه حلقه است راستی یادم نره بگم که ما آدرس ip تمام سیستم های داخل شبکه را می خواهیم .
من یک کد دارم که فقط ادرس ip سیستم خودم را برمی گردونه

ComboBox1.Items.Clear()
Dim myIPs As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHos tName())
Dim temp As String
For Each myIP As System.Net.IPAddress In myIPs.AddressList
temp = myIPs.HostName & " IP is : " & myIP.ToString()
ComboBox1.Items.Add(temp)
Next

MOSTAFANAVVAB
چهارشنبه 07 اسفند 1387, 07:43 صبح
agha in kode ye reze moshkell dare khabare nashod dostan

MOSTAFANAVVAB
شنبه 10 اسفند 1387, 09:21 صبح
با سلام

دوستان خبری نشد کسی جواب سوال من رو نمی دونه؟؟؟؟

MOSTAFANAVVAB
دوشنبه 12 اسفند 1387, 07:26 صبح
aloooooooooooooooooooooooooooooooo

MOSTAFANAVVAB
شنبه 17 اسفند 1387, 09:07 صبح
پس چی شد ؟

جرا نظر نمی دید/؟

MOSTAFANAVVAB
شنبه 17 اسفند 1387, 09:54 صبح
آقا پس چی شد؟

MOSTAFANAVVAB
شنبه 17 اسفند 1387, 13:42 عصر
آقا این کار را با وبی نمیشه انجام داد یاذ کسی بلد نیس
بخدا من برای برنامه سازمانی میخوام یعنی میخواهم بدانم کدام سیستم کی روشن و چقدر وشن بوده

MOSTAFANAVVAB
یک شنبه 18 اسفند 1387, 12:20 عصر
چی شد پس بابا من منتظر هستم

MOSTAFANAVVAB
سه شنبه 20 اسفند 1387, 10:54 صبح
pas che shod ......................................

anooshiran
پنج شنبه 22 اسفند 1387, 02:25 صبح
سلام دوست عزيز

با پوزش از تاخير در جواب

بگذاريد اول مطلبي را روشن كنم.

پيدا كردن ip هاي موجود در يك شبكه به هيچ عنوان به معني اين نيست كه client ها فعال هستند.يا به قول شما پرسنل سر كار خود هستند.

كد زير پيدا كردن ip هاي موجود را نشان مي دهد.




PrivateSub FindIp()
Dim ipRange AsString = "192.168.1."'1
Dim LocalHostName AsString
LocalHostName = Dns.GetHostName()
For i AsInteger = 1 To 254
Dim ipHostEntry As IPHostEntry = Dns.GetHostEntry(ipRange + i.ToString)
IfNot ipHostEntry.HostName = ipHostEntry.AddressList.GetValue(0).ToString Then
IP_LIST.Add(ipHostEntry.AddressList.GetValue(0).To String, ipHostEntry.HostName)
EndIf
Next i
EndSub



حال توجه كنيد . iPRange دامنه ip شبكه شماست كه همانطور كه توجه نموده ايد عدد بعد از point آخر را به عمد حذف نموده ام.

حال در يك لوپ از 1 تا 254 ( دقت كنيد نه صفر و نه 255 ) با افزودن i به انتهاي iprange تمامي Ip هايي را كه ممكن است سيستم شما داشته باشد را بررسي كرده و در صورت وجود چنين ip آن را در يك Dictionary يا هر collection ديگري ذخيره مي كنيم.

توجه كنيد
ipHostEntry.HostName نام client و
ipHostEntry.AddressList.GetValue(0).ToString عدد ip را بر ميگرداند.

حال تمام ip هاي موجود جمع آوري شده. ولي اين به خودي خود كافي نيست و نمي توان متوجه شد كه كدام ip فعال است.

براي اين منظور بايد ip هاي جمع آوري شده را در واحدهاي زماني مشخص ، بستگي به نياز شما ping كرد. نتيجه ping وضعيت ip را براي ما مشخص ميكند.




Private Sub CheckIpSituation()
For Each _item As System.Collections.Generic.KeyValuePair(Of String, String) In IP_LIST
If My.Computer.Network.Ping(_item.Value, 1000) Then
MsgBox("Server pinged successfully." + _item.Value, MsgBoxStyle.OkOnly, _item.Key)
Else
MsgBox("Ping request timed out.")
End If
Next

End Sub



بقيه كار بستگي به سليقه شما دارد. من به ذكر يك message كفايت كردم ولي شما مي توانيد مثلا با چيدن تعدادي checkbox در يك panel در كد فوق اگر نتيجه ping موفقيت آميز بود checkbox را check كنيد.

اين كدها را من همين امروز روي يك شبكه امتحان كردم و كاملا جواب داد.

در ضمن با تمام تفاضيل فوق User براحتي ميتواند شما را گمراه كند . اين روش ها هيچ كدام 100 در صد شما را به منظورتان كه كنترل حضور افراد در پشت ميز كار است نمي رساند.

البته روش هاي ديگري نيز موجود است كه اصولا با مباني فوق سروكاري ندارد.

باز هم اگر مشكلي داشتيد در صورت آگاهي در خدمت خواهم بود.

anooshiran
دوشنبه 26 اسفند 1387, 12:11 عصر
سلام دوست عزيز

در رابطه با پيشنهاد فوق كه برايتان مطرح كردم يك نكنه ديگر لازم به تذكر است.

پيداكردن ip ها كه در ماژول FindIp انچام ميپذيرد. اصولا بسيار زمانبر است. بنابراين بهتر است كه شما يك بار از اين طربق ip ها را پيدا كرده و ذخيره كنيد. و هر بار براي اجراي CheckIpSituation از فايل ذخيره شده استفاده كنيد.چون عمل ping كردن فوق العاده سريع است ، شما ميتوانيد در واحد هاي مشخصي از زمان اين كنترل را انجام دهيد.
پيشنهاد ديگري كه دارم ماژول CheckIpSituation را از طريق thread اجرا كنيد.

nokhodsiah2001
جمعه 30 اسفند 1387, 13:42 عصر
سلام به همه دوستان
من یک نمونه برنامه نوشتم امیدوارم به درد بخوره البته وقت نکردم کاملترش کنم اگر دوستان کسی وقت داشت ... کاملش کنه و برای بقیه هم بذاره توهمین جا با تشکر

nokhodsiah2001
جمعه 30 اسفند 1387, 13:44 عصر
راستی........................

سال نو همگی مبارک......:تشویق: :قلب:

nokhodsiah2001
پنج شنبه 06 فروردین 1388, 11:46 صبح
چی شد به درد کسی نخورد؟ عجیبه.......

ghrzarei
جمعه 07 فروردین 1388, 08:56 صبح
دوست عزیز سلام
من دقیقا برنامه ای مشابه درخواست شما البته با vb6 حدود دوسال قبل نوشتم که هنوز در محل کار نه برای حضورو غیاب پرسنل بلکه برای کنترل سیستمهای که فعال هست جهت کنترل و بروز رسانی ویروس کش کلاینت ها استفاده می شود(حقیقتش از نظر امنتیتی آخرش ...) و اما طریقه کار خودم :
می دونی که در شرکت شما هم رنج Ip سیستمها مشخص هست مثلا از 10.100.1.1 که معمولا مربوط به خود دامین می باشد تا 10.100.1.255 حالا می تونی در یک حلقه for یکی یکی سیستمها را ping کنی و هر کدام که ping شد مشخص سیستم روشن و مشغول به کار می باشد و در یک لیست باکس و یا گرید جهت مشاهده مدیر قرار بدهی برای سیستم دیگر هم که جز دامین هستند از یک رنج ip دیگر استفاده کن.
ضمنا در صورت تمایل جهت اسم سیستمها دامین هم میتونی از dns دامین استفاده کنی موفق باشی(تازه کار)

tdkhakpur
سه شنبه 01 اردیبهشت 1388, 02:32 صبح
عزیزم سلام
شما گفتید تو یه شرکت بزگ هستم که دارم برنامه مینویسم
اگه موفق شدید با برنامتو ن توی شبکه با یه IP خاص ارتباط برقرار کنید تا 98 درصد از کار شما تموم شده فقط یه اشکال جزعی دارید. اونهم اینه که برنامه خودتون رو تکمیل کنید و توی ساختار userهای برنامتون یک پروسه ای تعریف کنید که فعال و غیر فعال بودن یه کاربر رو توی یه پارامتر فایل یا هر جایی که و ضعیت کاربران رو ذخیره کرده اید بررسی کنه و لازم نیست یک IP ر و جستجو کنید شما فابل uinq مخصوص userها رو جستجو کنید.

kosar ranjbar
سه شنبه 01 اردیبهشت 1388, 20:54 عصر
سلام من یه فایلpdf مربوط به سرور و کلاینت پیدا کردم امیدوارم کمکتان کند .که در سایت زیر در قسمت مقالات موجوده به نام برنامه نويسي Socket بوسيله .net

http://www.fekrinejat.com/Articles.htm

MOSTAFANAVVAB
پنج شنبه 28 خرداد 1388, 09:18 صبح
عزیزم سلام
شما گفتید تو یه شرکت بزگ هستم که دارم برنامه مینویسم
اگه موفق شدید با برنامتو ن توی شبکه با یه IP خاص ارتباط برقرار کنید تا 98 درصد از کار شما تموم شده فقط یه اشکال جزعی دارید. اونهم اینه که برنامه خودتون رو تکمیل کنید و توی ساختار userهای برنامتون یک پروسه ای تعریف کنید که فعال و غیر فعال بودن یه کاربر رو توی یه پارامتر فایل یا هر جایی که و ضعیت کاربران رو ذخیره کرده اید بررسی کنه و لازم نیست یک IP ر و جستجو کنید شما فابل uinq مخصوص userها رو جستجو کنید.
__________________________________________________ __________________________________________________ ________________
دوست عزیز ای کاش بیشتر توضیح می دادی

MOSTAFANAVVAB
یک شنبه 25 مرداد 1388, 07:41 صبح
دوستان موردی که سوال شده راهی هم در سی شارپ دات نت دارد یا نه؟