public void TestParsing() { var dateTime = DateTime.Now; var usage = new NetworkLicenseUsage("computerId", "ip", "userName", "licenseSignature", dateTime); Assert.AreEqual("computerId", usage.ComputerId); Assert.AreEqual("ip", usage.Ip); Assert.AreEqual("licenseSignature", usage.LicenseSignature); Assert.AreEqual("userName", usage.UserName); //Assert.IsTrue(ObjectHelper.AreEqual(dateTime, usage.StartDateTime)); var networkString = usage.ToNetworkMessage(); var usage2 = NetworkLicenseUsage.Parse(networkString); Assert.AreEqual(usage.ComputerId, usage2.ComputerId); Assert.AreEqual(usage.Ip, usage2.Ip); Assert.AreEqual(usage.LicenseSignature, usage2.LicenseSignature); Assert.AreEqual(usage.UserName, usage2.UserName); //Assert.IsTrue(ObjectHelper.AreEqual(usage.StartDateTime, usage2.StartDateTime)); }
private void HandleIncomingRequests(object ipAddressAsObject) { try { var ipAddress = (ipAddressAsObject != null) ? IPAddress.Parse((string)ipAddressAsObject) : IPAddress.Any; Log.Debug("Creating listener for ip '{0}'", ipAddress); var udpClient = new UdpClient(); udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); udpClient.ExclusiveAddressUse = false; udpClient.EnableBroadcast = true; udpClient.Client.Bind(new IPEndPoint(ipAddress, Port)); var licenseSignature = string.Empty; while (true) { try { if (string.IsNullOrEmpty(licenseSignature)) { var currentLicense = _licenseService.CurrentLicense; if (currentLicense != null) { licenseSignature = currentLicense.Signature; } } if (string.IsNullOrWhiteSpace(licenseSignature)) { // No reason to wait for something, wait and continue Thread.Sleep(5000); continue; } var ipEndPoint = new IPEndPoint(IPAddress.Any, Port); var data = udpClient.Receive(ref ipEndPoint); var message = Encoding.ASCII.GetString(data); if (string.Equals(message, licenseSignature)) { Log.Debug("Received request from '{0}' on '{1}' to get currently used license", ipEndPoint.Address, udpClient.Client.LocalEndPoint); var licenseUsage = new NetworkLicenseUsage(_machineId, ipAddress.ToString(), _userName, licenseSignature, _startDateTime); var responseMessage = licenseUsage.ToNetworkMessage(); var responseBytes = ASCIIEncoding.ASCII.GetBytes(responseMessage); udpClient.Send(responseBytes, responseBytes.Length, ipEndPoint); } } catch (SocketException) { // Ignore, it's probably the timeout } } } catch (Exception ex) { Log.Error(ex, "Failed to handle incoming requests, probably a process is already running on the same port"); } }
private void HandleIncomingRequests(object ipAddressAsObject) { try { var ipAddress = (ipAddressAsObject != null) ? IPAddress.Parse((string)ipAddressAsObject) : IPAddress.Any; Log.Debug("Creating listener for ip '{0}'", ipAddress); using (var udpClient = new UdpClient()) { udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); udpClient.ExclusiveAddressUse = false; udpClient.EnableBroadcast = true; udpClient.Client.Bind(new IPEndPoint(ipAddress, Port)); var licenseSignature = string.Empty; while (true) { try { if (string.IsNullOrEmpty(licenseSignature)) { var currentLicense = _licenseService.CurrentLicense; if (currentLicense != null) { licenseSignature = currentLicense.Signature; } } if (string.IsNullOrWhiteSpace(licenseSignature)) { // No reason to wait for something, wait and continue Thread.Sleep(5000); continue; } var ipEndPoint = new IPEndPoint(IPAddress.Any, Port); var data = udpClient.Receive(ref ipEndPoint); var message = Encoding.ASCII.GetString(data); if (string.Equals(message, licenseSignature)) { Log.Debug("Received request from '{0}' on '{1}' to get currently used license", ipEndPoint.Address, udpClient.Client.LocalEndPoint); var licenseUsage = new NetworkLicenseUsage(_machineId, ipAddress.ToString(), _userName, licenseSignature, _startDateTime); var responseMessage = licenseUsage.ToNetworkMessage(); var responseBytes = ASCIIEncoding.ASCII.GetBytes(responseMessage); udpClient.Send(responseBytes, responseBytes.Length, ipEndPoint); } } catch (SocketException) { // Ignore, it's probably the timeout } } } } catch (Exception ex) { Log.Error(ex, "Failed to handle incoming requests, probably a process is already running on the same port"); } }