private void ProcessDataReceived(byte[] data, IPEndPoint ipEndPoint) { if (data.Length > 0) { bool isLocal = LocalIpAddress.Equals(ipEndPoint.Address); if (!isLocal || AllowLocal) { var networkData = new NetworkData(Encoding.UTF8.GetString(data)); if (networkData.NetworkName != NetworkName) { return; } if (networkData.ServiceName != ServiceName) { return; } NetworkDataReceived?.Invoke(this, new NetworkDataReceived { Data = networkData, IpAddress = ipEndPoint.Address.ToString(), Port = ipEndPoint.Port, IsLocal = isLocal }); } } }
/// <summary> /// 寻找局域网设备 /// </summary> public void FindPeer() { // 实际是反过来,让其他设备询问 StartMulticast(); var message = LocalIpAddress.ToString(); SendBroadcastMessage(message); // 先发送再获取消息,这样就不会收到自己发送的消息 ReceivedMessage += (s, e) => { Console.WriteLine($"找到 {e}"); }; }