在同一本地网络中查找彼此的计算机?

时间:2015-02-17 15:21:01

标签: c# network-programming

我想申请在同一本地网络中的计算机之间共享数据。每台计算机都应该能够看到对方。 (就像iOS和OSX中的AirDrop一样)。

这是最好的方法吗?

2 个答案:

答案 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;
        }