Учитывая, что openvpn - это сервер udp, работающий через порт 1194, мне интересно узнать, как я могу отправить пакет, используя udp c#.
Мне известно о том, что openVpn является протоколом Сам, и учитывая отсутствие знаний в этой области, я начал писать простой клиент udp для отправки сообщения на сервер.
Вот код.
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace ConnectOpenVPN
{
public struct Received
{
public IPEndPoint Sender;
public string Message;
}
abstract class UdpBase
{
protected UdpClient Client;
protected UdpBase()
{
Client = new UdpClient();
}
public async Task<Received> Receive()
{
var result = await Client.ReceiveAsync();
return new Received()
{
Message = Encoding.ASCII.GetString(result.Buffer, 0, result.Buffer.Length),
Sender = result.RemoteEndPoint
};
}
}
//Client
class UdpUser : UdpBase
{
private UdpUser() { }
public static UdpUser ConnectTo(IPAddress serverIP, int port)
{
var connection = new UdpUser();
connection.Client.Connect(serverIP, port);
return connection;
}
public void Send(string message)
{
var datagram = Encoding.ASCII.GetBytes(message);
Client.Send(datagram, datagram.Length);
}
}
class Program
{
static void Main(string[] args)
{
//create a new client
var client = UdpUser.ConnectTo(IPAddress.Parse("13.23.118.17"), 1194);
Task.Run(async () => {
while (true)
{
try
{
var received = await client.Receive();
Console.WriteLine(received.Message);
if (received.Message.Contains("quit"))
break;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
});
string read;
do
{
read = Console.ReadLine();
client.Send(read);
} while (read != "quit");
}
}
}
Итак, я невозможно получить какое-либо сообщение с сервера и просто остроумие навсегда. Даже не отказано или исключение.
Я планировал отправить учетные данные и конфигурацию openvpn следующим образом.
Что я должен делать при создании клиентской программы для открытого клиента vpn? Правильно ли создание UDP-клиента или я должен использовать протокол openVPn и как?