PDA

View Full Version : سوال: بدست آوردن IP و نام کامپیوتر های عضو شبکه



teardrop
دوشنبه 24 اسفند 1388, 21:30 عصر
با عرض سلام

می خواستم IP و نام کامپیوتر های عضو شبکه را بدست بیاورم.

متشکرم.

FastCode
دوشنبه 24 اسفند 1388, 21:37 عصر
باید با توجه به subnetmask 255 یا 65535 یا 16777215 یا 4294967295 تا ping بفرستی.هر کدوم برگرده یعنی اون کامپوتر وجود داره.(این در وضعیتی است که شما بخواهی به کنسول سرور خودت متصل بشی.اگر میخواهید دیتابیس رو شناسایی کنید باید از جداول *dbo.sys استفاده کنید.)

teardrop
دوشنبه 24 اسفند 1388, 22:03 عصر
یک سورس کد میتوانی به من بدی ؟ برای برنامه نویسی سوکت میخوام

اوبالیت به بو
دوشنبه 24 اسفند 1388, 22:15 عصر
کلاس خاصی نداریم؟
مثلا تو ASP.NET از httpContex استفاده می کنیم

kia1349
سه شنبه 25 اسفند 1388, 07:01 صبح
در بخش open source یه برنامه گذاشتم برای چت در شبکه lan . اگر توی سورس برنامه رو نگاه کنی مشکلت حل میشه.فقط باید توجه کنی که اکثر افراد با این قبیل کدها مشکل دارن چون سیستم باید از طریق dns آدرس ip رو بدست بیاره و در بیشتر موارد افراد تازه کار و یا ناوارد نمیتونن خوب dns رو هندل کنن و در بدست آوردن ip کامپیوترهای شبکه به مشکل میخورن

alinaghiha
سه شنبه 25 اسفند 1388, 08:39 صبح
دوست گرامي قبلا جوابش بدست اومده بود
خوشحال ميشم روش بهتري ارائه كنيد. سرعت روش من خيلي پايينه
http://barnamenevis.org/forum/showthread.php?t=191949

اوبالیت به بو
چهارشنبه 26 اسفند 1388, 12:54 عصر
در بخش open source یه برنامه گذاشتم برای چت در شبکه lan . اگر توی سورس برنامه رو نگاه کنی مشکلت حل میشه.فقط باید توجه کنی که اکثر افراد با این قبیل کدها مشکل دارن چون سیستم باید از طریق dns آدرس ip رو بدست بیاره و در بیشتر موارد افراد تازه کار و یا ناوارد نمیتونن خوب dns رو هندل کنن و در بدست آوردن ip کامپیوترهای شبکه به مشکل میخورن

ممنون.
اگه میشه اصول این کار رو توضیح بدین نه برنامه نویسی، چون من می خوام اصولش رو یاد بگیرم. اگر براتون ممکن هست.
مرسی

mosykhan
چهارشنبه 26 اسفند 1388, 15:04 عصر
از کلاس زیر استفاده کنید

using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Collections;
using System.Windows.Forms;
namespace NetWorkBrowser
{
#region NetworkBrowser CLASS
public sealed class NetworkBrowser
{
#region Dll Imports
[DllImport("Netapi32", CharSet = CharSet.Auto, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
public static extern int NetServerEnum(
string ServerNane, // must be null
int dwLevel,
ref IntPtr pBuf,
int dwPrefMaxLen,
out int dwEntriesRead,
out int dwTotalEntries,
int dwServerType,
string domain, // null for login domain
out int dwResumeHandle
);
[DllImport("Netapi32", SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
public static extern int NetApiBufferFree(
IntPtr pBuf);
//create a _SERVER_INFO_100 STRUCTURE
[StructLayout(LayoutKind.Sequential)]
public struct _SERVER_INFO_100
{
internal int sv100_platform_id;
[MarshalAs(UnmanagedType.LPWStr)]
internal string sv100_name;
}
#endregion
#region Public Constructor
public NetworkBrowser()
{
}
#endregion
#region Public Methods
public ArrayList getNetworkComputers()
{
//local fields
ArrayList networkComputers = new ArrayList();
const int MAX_PREFERRED_LENGTH = -1;
int SV_TYPE_WORKSTATION = 1;
int SV_TYPE_SERVER = 2;
IntPtr buffer = IntPtr.Zero;
IntPtr tmpBuffer = IntPtr.Zero;
int entriesRead = 0;
int totalEntries = 0;
int resHandle = 0;
int sizeofINFO = Marshal.SizeOf(typeof(_SERVER_INFO_100));

try
{
int ret = NetServerEnum(null, 100, ref buffer, MAX_PREFERRED_LENGTH,
out entriesRead,
out totalEntries, SV_TYPE_WORKSTATION | SV_TYPE_SERVER, null, out
resHandle);
//if the returned with a NERR_Success (C++ term), =0 for C#
if (ret == 0)
{
//loop through all SV_TYPE_WORKSTATION and SV_TYPE_SERVER PC's
for (int i = 0; i < totalEntries; i++)
{
tmpBuffer = new IntPtr((int)buffer + (i * sizeofINFO));
_SERVER_INFO_100 svrInfo = (_SERVER_INFO_100)
Marshal.PtrToStructure(tmpBuffer, typeof(_SERVER_INFO_100));
networkComputers.Add(svrInfo.sv100_name);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Problem with acessing network computers in NetworkBrowser " +
"\r\n\r\n\r\n" + ex.Message,
"Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return null;
}
finally
{
NetApiBufferFree(buffer);
}
return networkComputers;
}
#endregion
}
#endregion
}

mosykhan
چهارشنبه 26 اسفند 1388, 15:10 عصر
طریقه استفاده :

private void BtnNetPCFinder_clicked(object sender, EventArgs e)
{
try

{
this.Cursor = Cursors.WaitCursor;
NetworkBrowser nb = new NetworkBrowser();
CmbNetPC.Items.Clear();
foreach (string pc in nb.getNetworkComputers())
{
CmbNetPC.Items.Add(pc);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n" + " ", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally { this.Cursor = Cursors.Default; }
}

kia1349
پنج شنبه 27 اسفند 1388, 10:14 صبح
ممنون.
اگه میشه اصول این کار رو توضیح بدین نه برنامه نویسی، چون من می خوام اصولش رو یاد بگیرم. اگر براتون ممکن هست.
مرسی

دوست عزیز کافیه توی برنامه ای که به شما دادم


ELListBoxItem MyItem = new ELListBoxItem(pc, pc);
رو به
ELListBoxItem MyItem = new ELListBoxItem(pc, kia(pc));

تغییر بدید
رویه kia اسم کامیوتر رو به IP تغییر میده

برای درک اون هم باید کلاس NetWorkBrowser.cs رو مطالعه کنید.یه کم سخته