41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |