PDA

View Full Version : مبتدی: تغییر اتوماتیک Ip در وقفه زمانی



sara_aryanfar
دوشنبه 29 فروردین 1390, 02:10 صبح
با چه کدی می تونم Ipسیستم رو تعویض کنم و یه آیپی دیگه به سیستم بدم البته می خوام خود برنامه بعد هر دو ثانیه اینکار رو انجام بده

flash118
دوشنبه 29 فروردین 1390, 09:37 صبح
با سلام دوست عزیز کد کلاس رو نگاه کنید من که ازش برای سیستم های توزیعی استفاده کردم خوب جواب داد جواب سئوالتون توش هست




using System;
using System.Management;

namespace WindowsFormsApplication_CS
{
class NetworkManagement
{
/// <summary>
/// Set's a new IP Address and it's Submask of the local machine
/// </summary>
/// <param name="ip_address">The IP Address</param>
/// <param name="subnet_mask">The Submask IP Address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setIP(string ip_address, string subnet_mask)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
try
{
ManagementBaseObject setIP;
ManagementBaseObject newIP =
objMO.GetMethodParameters("EnableStatic");

newIP["IPAddress"] = new string[] { ip_address };
newIP["SubnetMask"] = new string[] { subnet_mask };

setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
}
catch (Exception)
{
throw;
}


}
}
}
/// <summary>
/// Set's a new Gateway address of the local machine
/// </summary>
/// <param name="gateway">The Gateway IP Address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setGateway(string gateway)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
try
{
ManagementBaseObject setGateway;
ManagementBaseObject newGateway =
objMO.GetMethodParameters("SetGateways");

newGateway["DefaultIPGateway"] = new string[] { gateway };
newGateway["GatewayCostMetric"] = new int[] { 1 };

setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);
}
catch (Exception)
{
throw;
}
}
}
}
/// <summary>
/// Set's the DNS Server of the local machine
/// </summary>
/// <param name="NIC">NIC address</param>
/// <param name="DNS">DNS server address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setDNS(string NIC, string DNS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
if (objMO["Caption"].Equals(NIC))
{
try
{
ManagementBaseObject newDNS =
objMO.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = DNS.Split(',');
ManagementBaseObject setDNS =
objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
}
catch (Exception)
{
throw;
}
}
}
}
}
/// <summary>
/// Set's WINS of the local machine
/// </summary>
/// <param name="NIC">NIC Address</param>
/// <param name="priWINS">Primary WINS server address</param>
/// <param name="secWINS">Secondary WINS server address</param>
/// <remarks>Requires a reference to the System.Management namespace</remarks>
public void setWINS(string NIC, string priWINS, string secWINS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();

foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
if (objMO["Caption"].Equals(NIC))
{
try
{
ManagementBaseObject setWINS;
ManagementBaseObject wins =
objMO.GetMethodParameters("SetWINSServer");
wins.SetPropertyValue("WINSPrimaryServer", priWINS);
wins.SetPropertyValue("WINSSecondaryServer", secWINS);

setWINS = objMO.InvokeMethod("SetWINSServer", wins, null);
}
catch (Exception)
{
throw;
}
}
}
}
}
}
}

sara_aryanfar
دوشنبه 29 فروردین 1390, 14:11 عصر
میشه در مورد این کد توضیح بدی از کجاهاش می تونم استفاده کنم و آیا میشه با تغییر رویداد رو تغییر بده

flash118
دوشنبه 29 فروردین 1390, 16:25 عصر
دوست عزیز سلام
این نمونه کد فوق شامل تمام کدهایی هست که تو یه برنامه هست فکر کنم با دیدن اسم تابع که خیلی گویا هست بتونید تشخیص بدید که کدوم تابع براتون عملی خواهد بود و کاربرد توابع گویا هستن باز هرجا نیاز بود من در خدمتم

sara_aryanfar
دوشنبه 29 فروردین 1390, 18:01 عصر
بله کاملا موافقم کد ها گویا هستند اما من چون زیاد وارد هم نیستم اگه ممکنه توضیحی بدین ببینین من روی برنامه ای کار می کنم که نیاز داره هر بار که مثلا یه کلیک می خوره یا یه کار دیگه یه آی پی سیستم جدید به سیستم بده مثلا می خوام داخل برنامه یه متد داشته باشم که هر بار اون رو فراخوانی کنه و کار تعویض آ پی رو انجام بده اگه ممکنه کد مربوط به این کار رو دقیق بهم بگید و اینکه این کار برای adsl کارایی داره

arta.nasiri
دوشنبه 29 فروردین 1390, 18:04 عصر
بله کاملا موافقم کد ها گویا هستند اما من چون زیاد وارد هم نیستم اگه ممکنه توضیحی بدین ببینین من روی برنامه ای کار می کنم که نیاز داره هر بار که مثلا یه کلیک می خوره یا یه کار دیگه یه آی پی سیستم جدید به سیستم بده مثلا می خوام داخل برنامه یه متد داشته باشم که هر بار اون رو فراخوانی کنه و کار تعویض آ پی رو انجام بده اگه ممکنه کد مربوط به این کار رو دقیق بهم بگید و اینکه این کار برای adsl کارایی داره

سلام منظور شما از تغییر آی پی چی هست ؟ آیا میخواهید Local Ip رو تغییر بدین یا آی پی که موقع اتصال به اینترنت به ما داده میشه ؟ اگه منظورتون این باشه شما باید پروکسی رو تغییر بدین

sara_aryanfar
دوشنبه 29 فروردین 1390, 18:12 عصر
سیستم ما در اینترنت یه آی پی مشخص داره منم می خوام موقع اتصال به اینترنت اون رو تغییر بدم تا نرم افزار از محدودیت در حرکت بین سایت ها رد بشه

arta.nasiri
دوشنبه 29 فروردین 1390, 18:46 عصر
سیستم ما در اینترنت یه آی پی مشخص داره منم می خوام موقع اتصال به اینترنت اون رو تغییر بدم تا نرم افزار از محدودیت در حرکت بین سایت ها رد بشه

خب پس شما باید رو سیستم پروکسی ست کنید. و فکر کنم اون کدی رو که flash118 دادن ip local رو تغییر میده!

شاید این (http://stackoverflow.com/questions/4884941/modifying-proxy-settings-within-c)کمکتون کرد