using System; using System.Net; using System.Net.Sockets; using System.Text; namespace MelonVPNCore { public static class Client { public static ClientResponseState SendDataMessage(DataMessage msg) => SendDataMessage(msg, false); public static ClientResponseState SendDataMessage(DataMessage msg, bool IsSendingFromDaemon) => SendCustomMessage(Messages.GetMessage(msg), IsSendingFromDaemon); public static ClientResponseState SendCustomMessage(string msg) => SendCustomMessage(msg, false); public static ClientResponseState SendCustomMessage(string msg, bool IsSendingFromDaemon) { IPHostEntry host = Dns.GetHostEntry("localhost"); IPAddress ipAddress = host.AddressList[0]; IPEndPoint remoteEndPoint = new IPEndPoint(ipAddress, IsSendingFromDaemon ? 22036 : 22035); try { if (msg == Messages.EOF || msg == "") return ClientResponseState.Blank; Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); client.Connect(remoteEndPoint); client.ReceiveTimeout = 5000; client.SendTimeout = 5000; byte[] bytes = Encoding.ASCII.GetBytes(msg); client.Send(bytes); client.Close(); return ClientResponseState.Sent; } catch (Exception e) { Console.WriteLine(e); return ClientResponseState.Error; } } } }