Если вы хотите проверить компьютер в пределах собственной подсети, вы можете проверить его, используя ARP. Вот пример:
//for sending an arp request (see pinvoke.net)
[DllImport("iphlpapi.dll", ExactSpelling = true)]
public static extern int SendARP(
int DestIP,
int SrcIP,
byte[] pMacAddr,
ref uint PhyAddrLen);
public bool IsComputerAlive(IPAddress host)
{
//can't check the own machine (assume it's alive)
if (host.Equals(IPAddress.Loopback))
return true;
//Prepare the magic
//this is only needed to pass a valid parameter
byte[] macAddr = new byte[6];
uint macAddrLen = (uint)macAddr.Length;
//Let's check if it is alive by sending an arp request
if (SendARP((int)host.Address, 0, macAddr, ref macAddrLen) == 0)
return true; //Igor it's alive!
return false;//Not alive
}
См. Pinvoke.net для получения дополнительной информации.
С каким портом вы должны подключиться? Учитывая, что брандмауэры - сетевые и для системы - система может быть легко доступна, но, похоже, не отвечает, если вы выбрали неправильный порт, чтобы попробовать. – tvanfosson 2008-12-07 13:38:51
BTW, я бы просто хотел сказать, что когда сеть задействована, по определению не может существовать «детерминированный» метод. http://en.wikipedia.org/wiki/Deterministic_algorithm – paxos1977 2008-12-07 17:40:48