我想申请在同一本地网络中的计算机之间共享数据。每台计算机都应该能够看到对方。 (就像iOS和OSX中的AirDrop一样)。
这是最好的方法吗?
答案 0 :(得分:1)
你想要的东西叫做网络广播。 您可以编写UDP发送方/接收方对,发送方广播查询网络中其他对等方的包,并且对等方将该包与其接收方一起捕获,并响应发送方,通知发送方其存在。
有关更多详细信息,请参阅有关p2p网络和udp数据报套接字的内容。
答案 1 :(得分:0)
您可以使用该功能。它为您提供了同一网络中的IP地址列表:
public List<string> GetARPResult()
{
string localIPAddress = Dns.GetHostAddresses(Environment.MachineName)[1].ToString();
Process p = null;
string output = string.Empty;
List<string> listIP = new List<string>();
try
{
p = Process.Start(new ProcessStartInfo("arp", "-a")
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
});
output = p.StandardOutput.ReadToEnd();
List<string> listArp = output.Split(' ').ToList();
for (int i = 0; i < listArp.Count; i++)
{
if (listArp[i].StartsWith(localIPAddress.Remove(localIPAddress.LastIndexOf("."))))
{
listIP.Add(listArp[i]);
}
}
// Remove local IP from IP list
listIP.RemoveAt(0);
p.Close();
}
catch (Exception ex)
{
throw new Exception("IPInfo: Error Retrieving 'arp -a' Results", ex);
}
finally
{
if (p != null)
{
p.Close();
}
}
return listIP;
}