نمایش نتایج 1 تا 11 از 11

نام تاپیک: چگونگی تشخیص Server IP Address

  1. #1
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    چگونگی تشخیص Server IP Address

    سلام دوستان...
    چند تا سوال دارم برای یه برنامه که قراره تحت شبکه کار کنه و دیتابیس اونم sql server 2008 هست.

    1- چجوری میشه IP کامپیوتر سرور رو مشخص کرد؟یعنی اگه بخوام برنامه بطور اتوماتیک IP کامپیوتر سرور رو بدست بیاره و ConnectionString رو بر اساس اون IP بسازه و به دیتابیس متصل بشه باید چیکار کنم؟اگه هم نمیشه چیکار کنم بهتره؟؟؟

    2- من میخوام برای دیتابیسم یوزر و پسورد تعریف کنم و این کارو با استفاده از sql server managment از بخش Login انجام دادم ولی رو سیستم خودم(local) هم با یوزر پسورد و هم بدون اون یعنی حالت Integrated Security=true میشه به دیتابیس وصل شد!!!ولی من میخوام که فقط با یوزر و پسورد متصل بشه باید چیکار کنم؟؟؟

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

  2. #2
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    سلام
    معمولا یه فایل application.Config که یک فایل Xml هست رو کنار پروژه میزارن و یه key توی اون برای connectionstring قرار میدن
    مزیت این فایل اینه که تو سیستم مقصد توی مسیر نصب شده میتونید اونو با notepad ویرایش کنید .
    نرم افزار های سطح بالاتر یه برنامه کوچیک برای اینکار درست میکنن که قابلیتهایی مثل جستجوی سرور و ست کردن user pass و ... انجام میده .

    در مورد password هم باید instance ی که برای لاگین کردن انتخاب کردید و دیتابیس توی اون هست باید pass داشته باشه .
    اینی که میگی به دو صورت می تونم وصل شم ، احتمالا دیتابیس رو تو دوتا instance داری . یعنی هم توی sql اونو داری و هم توی ویژوال استودیو

    موفق باشید .

  3. #3
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    ممنونم دوست عزیز،ولی من میخوام یه جوری بفهمم IP سرور چیه؟!!!
    یکی از دوستام بهم پیشنهاد کرد که یه قسمت بذارم که اگه IP سرور عوض شد خود کاربر اونو وارد کنه و منم اونو یه جا ذخیره کنم!!به نظرتون این مناسبه؟!

    در ضمن من دیتابیسم فقط توی sql هست ولی با هردو روش وصل میشه!!!
    همون دوستم میگه وقتی برنامه رو روی شبکه نصب کنم فقط با یوزر و پسورد متصل میشه،این درسته؟!
    ممنونم

  4. #4
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    ممنونم دوست عزیز،ولی من میخوام یه جوری بفهمم IP سرور چیه؟!!!
    IP آدرس منحصر به فرد یه کامپیوتر توی شبکه است مثلا IP میتونه 172.27.191.166 باشه برای اطلاعات بیشتر به اینجا برید .

    یکی از دوستام بهم پیشنهاد کرد که یه قسمت بذارم که اگه IP سرور عوض شد خود کاربر اونو وارد کنه و منم اونو یه جا ذخیره کنم!!به نظرتون این مناسبه؟!
    خوبه اما این قسمت کجا هست ؟ توی برنامه هست ؟ بیرون برنامه هست ؟ روی فرم لاگین هست؟ فکر این رو کنید که اگر IP سرور شما عوض شد !! باید از فرم لاگین چه جوری عبور کرد در صورتی که فرم لاگین برای لاگین کردن اطلاعات رو باید از دیتابیس روی سرور بخونه ؟!!!
    در ضمن من دیتابیسم فقط توی sql هست ولی با هردو روش وصل میشه!!!
    حتما دوتا instance دارید . اینو برای اطمینان از تالار sql پیگیری کنید .

    همون دوستم میگه وقتی برنامه رو روی شبکه نصب کنم فقط با یوزر و پسورد متصل میشه،این درسته؟!
    نه ربطی به اون نداره . بستگی به instance سرور داره که autentication Mode مربوط به اون روی windows باشه یا sql server !!

    موفق باشید .

  5. #5
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    نقل قول نوشته شده توسط M.YasPro مشاهده تاپیک
    IP
    خوبه اما این قسمت کجا هست ؟ توی برنامه هست ؟ بیرون برنامه هست ؟ روی فرم لاگین هست؟ فکر این رو کنید که اگر IP سرور شما عوض شد !! باید از فرم لاگین چه جوری عبور کرد در صورتی که فرم لاگین برای لاگین کردن اطلاعات رو باید از دیتابیس روی سرور بخونه ؟!!!
    موفق باشید .
    ممنونم از توجه شما...
    منظورم اینه که توی فرم لوگین بذارم مثلا یه کلید که با زدن اون یه فرم با یه تکست باکس باز بشه و بگیره،این خوبه به نظرت؟

    این Instance که میگی رو باید از کجا بفهمم که دوتاست یا نه؟!!!میشه بیشتر توضیح بدین؟!
    ممنونم

  6. #6
    کاربر دائمی آواتار peymanjon
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    مشهد
    پست
    252

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    شما از سیستم کلاینت نمی تونید IP سرور یا کلاینت های دیگر را از طریق کدنویسی بدست بیاورید مگه اینکه کامپیوتر سرور این اجازه را به شما بدهد ، یعنی اجازه لازم را در ویندوز سرور که در کامپیوتر سرور نصب است به شما به عنوان کلاینت داده بشه که IP سرور را داشته باشید .
    معمولا IP های یک شبکه در یک range مشخص داده می شود و تغییرات زیادی در بازه های زمانی کوتاه در شماره های IP داده نمی شود ولی راهی که من به ذهنم می رسه این است که یا شما با بخش انفورماتیک جایی که می خواهید برنامه را برای آنجا بنویسید صحبت کنید و از مسئول شبکه آنها بپرسید این اجازه را به شما میدهند IP سرور را روی یک پورت خاص داشته باشید یا خیر ، اگر داشتید که آن را میتوانید در هنگامیکه برنامه run میشود بگیرید و set کنید در غیر این صورت باید یک APP کوچک بنویسید که در سرور run بشود و IP سرور را دریافت کند و در یک فیلد در دیتابیس ذخیره کند ، حال برنامه شما IP سرور را از از آن فیلد بخواند. چون تنها چیز مشترک بین شما و سرور ، دیتابیس است .برای نوشتن برنامه ای که IP یک سیستم را بدست بیاورد هم با یک سرچ کدهایش را بدست می آورید اگه نتونستید بگویید تا من بذارم چون من این کار را قبلا انجام دادم.
    موفق باشید

  7. #7
    کاربر دائمی آواتار M.YasPro
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Kernel
    پست
    1,171

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    خوبه
    ولی از نظر طراحی زیاد تو چشم نباشه چون شاید از هر 10000 بار لاگین یه بار استفاده بشه ، پس ذهن کاربر رو در گیر نکن .
    Instance هات رو میتونی توی صفحه لاگین sqlsever توی کمبوی server name ببینید .
    موفق باشید .

  8. #8
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    نقل قول نوشته شده توسط peymanjon مشاهده تاپیک
    برای نوشتن برنامه ای که IP یک سیستم را بدست بیاورد هم با یک سرچ کدهایش را بدست می آورید اگه نتونستید بگویید تا من بذارم چون من این کار را قبلا انجام دادم.
    موفق باشید
    ممنونم آقا پیمان...

    اگه میشه لطف کن کدشم برام بذار ممنون میشم،آخه من همیشه اینترنت در دسترس ندارم و نمیتونم سرچ کنم!!!
    راستی اگه اسم کامپیوتر سرور رو بخوام بازم با کد میشه پیداش کرد؟!
    اگه میشه لطف کنید کد اینم بذارید...
    واقعا ممنونم

  9. #9
    کاربر دائمی آواتار peymanjon
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    مشهد
    پست
    252

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    بفرمائید این هم کد هایی که IP سیستم جاری را پیدا میکند.
    http://www.codeproject.com/KB/IP/Net...nfo_in_C_.aspx
    من از این کد تو پروژم استفاده کردم البته با کمی تغییر بصورت زیر :
      string strip = string.Empty;
    [DllImport("Iphlpapi.dll")]
    public static extern uint GetAdaptersAddresses(uint Family, uint flags, IntPtr Reserved,
    IntPtr PAdaptersAddresses, ref uint pOutBufLen);
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]


    public void x()
    {
    //////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////پیدا کردن IP/////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////
    IntPtr PAdaptersAddresses = new IntPtr();
    bool AdapterFound = false;

    uint pOutLen = 100;
    PAdaptersAddresses = Marshal.AllocHGlobal(100);

    uint ret =
    GetAdaptersAddresses(0, 0, (IntPtr)0, PAdaptersAddresses, ref pOutLen);

    // if 111 error, use
    if (ret == 111)
    {
    Marshal.FreeHGlobal(PAdaptersAddresses);
    PAdaptersAddresses = Marshal.AllocHGlobal((int)pOutLen);
    ret = GetAdaptersAddresses(0, 0, (IntPtr)0, PAdaptersAddresses, ref pOutLen);
    }

    IP_Adapter_Addresses adds = new IP_Adapter_Addresses();

    IntPtr pTemp = PAdaptersAddresses;
    IntPtr pTempIP = new IntPtr();

    while (pTemp != (IntPtr)0)
    {
    Marshal.PtrToStructure(pTemp, adds);
    string adapterName = Marshal.PtrToStringAnsi(adds.AdapterName);
    string FriendlyName = Marshal.PtrToStringAuto(adds.FriendlyName);
    string tmpString = string.Empty;

    for (int i = 0; i < 6; i++)
    {
    tmpString += string.Format("{0:X2}", adds.PhysicalAddress[i]);

    if (i < 5)
    {
    tmpString += ":";
    }
    }


    RegistryKey theLocalMachine = Registry.LocalMachine;

    RegistryKey theSystem
    = theLocalMachine.OpenSubKey(@"SYSTEM\CurrentControl Set\Services\Tcpip\Parameters\Interfaces");
    RegistryKey theInterfaceKey = theSystem.OpenSubKey(adapterName);

    if (theInterfaceKey != null)
    {

    string DhcpIPAddress = (string)theInterfaceKey.GetValue("DhcpIPAddress");

    // system is using DHCP
    if (DhcpIPAddress != null)
    {
    string tArray = (string)
    theInterfaceKey.GetValue("DhcpIPAddress", theInterfaceKey);
    if (FriendlyName.ToString() == "Wireless Network Connection")
    {
    strip += "Network adapter: " + FriendlyName.ToString() + "\r\n";
    strip += "IP Address: " + tArray + "\r\n";
    strip += "MAC Address: " + tmpString + "\r\n\r\n";
    AdapterFound = true;



    }


    }

    else
    {
    string[] tArray = (string[])
    theInterfaceKey.GetValue("IPAddress", theInterfaceKey);

    //AdapterInfoTextBox.Text += "Network adapter: " + FriendlyName.ToString() + "\r\n";

    //for (int Interface = 0; Interface < tArray.Length; Interface++)
    //{
    // AdapterInfoTextBox.Text += "IP Address: " + tArray[Interface] + "\r\n";
    // AdapterFound = true;
    //}

    //AdapterInfoTextBox.Text += "MAC Address: " + tmpString + "\r\n\r\n";
    for (int Interface = 0; Interface < tArray.Length; Interface++)
    {
    strip = "\\" + "\\" + tArray[Interface];

    AdapterFound = true;


    }

    }
    }

    pTemp = adds.Next;
    }

    if (AdapterFound != true)
    {
    strip += "No network adapters configured/present\r\n";

    }

    }


    #endregion
    IP در صورت وجود در رشته strip قرار میگیره ، حالا شما می تونید بر اساس اون هر کاری می خوای بکنی.دوباره تاکید می کنم من کد را تغییر دادم تا اطلاعات اضافی را که به کارم نمی آمد حذف کنم برای همین آدرس منبع کد را برایتان گذاشتم تا شما از آن در صورتی که اطلاعات بیشتر می خواهید ، استفاده کنید.
    حالا شما می توانید با نوشتن یک برنامه کوچک که شامل کد بالا می باشد در سرور IP آن را بدست آورید و آن را در دیتابیس ذخیره کنید ، حالا با برنامه اصلی خود در سمت کلاینت شما می توانید با متصل شدن به دیتابیس و IP سرور را داشته باشید.
    در ضمن دیدن این برنامه ها هم خالی از لطف نیست:
    http://www.codeproject.com/KB/IP/IpX...?display=Print
    http://www.codeproject.com/KB/IP/oba...formation.aspx
    http://www.codeguru.com/Csharp/Cshar...icle.php/c6041
    http://www.csharp-examples.net/local-ip/
    امیدوارم کمک کرده باشم.
    موفق باشید.

  10. #10
    کاربر دائمی آواتار morteza271
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    مشهد
    پست
    1,723

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    ممنونم ولی اگه تو دیتابیس ذخیره کنم چطوری میتونم به اون دسترسی داشته باشم در صورتی که من میخوام اون IP رو به کلاینت بدم تا به دستابیس روی سرور متصل بشه!!!!
    ممنون...ولی دیگه لازمم نمیشه!!مرسی

  11. #11
    کاربر دائمی آواتار peymanjon
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    مشهد
    پست
    252

    نقل قول: چند سوال در مرورد برنامه شبکه ای

    نکته همین جاست اگه برنامه شما قراره تحت شبکه اجرا بشه شما خواه نا خواه باید دیتابیست share باشه و دیگر کامپیوتر ها به او وصل باشند پس همانطور که گفتم شما ممکن است اجازه دسترسی به سرور را نداشته باشین تا بتوانید IP آن را بگیرید ولی هم شما و هم سرور در برنامه تحت شبکه به دیتابیس متصل هستید (در اصل دیتابیس در سرور است و client ها هم به آن متصل هستند)، یعنی در اصل نقطه اشتراک شما با سرور بانک اطلاعاتی شما است ، پس می توانید یک برنامه برای سرور بنویسید که به محض run شدن برنامه شما هم run شود IP سرور را در یک فیلد دیتابیس بریزد و شما از روی کامپیوتر خود که در شبکه می باشد و به دیتابیس نیز متصل هستید IP را بردارید و Connection خود را config کنید.
    توجه کنید پورت 1433 برای دیتابیس SQL server میباشد که از طریق این پورت شما به دیتابیسی که در سرور است متصل میشوید ، و سرورها این پورت را برای برنامه های تحت شبکه شرکت و یا کارخانه باز می گذارند.
    اگر اطلاعاتی در این زمینه ندارید به این آدرس بروید و pdf که گذاشتم را مطالعه کنید.https://barnamenevis.org/showthread.php?t=249252
    موفق باشید.

قوانین ایجاد تاپیک در تالار

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