Как использовать SimplSockets с делегатом для проекта "hello world"?

Я просматриваю библиотеку SimplSockets для создания приложения, которое использует сокеты. Однако, после проверки других вопросов по переполнению стека, блог авторов, источник и несколько поисков в Интернете, я не могу найти простой способ создать проект "привет мир" с помощью SimplSockets.

Как создать приложение "hello world", которое использует SimplSockets?

Чтобы предотвратить "слишком широкое" закрытие, все, что я хочу сделать, это отправить и получить некоторые данные. Строка, что угодно. Причина, по которой я открыл этот вопрос, заключается в том, что я не уверен, как вызвать конструктор, поскольку он использует func<T>, где T - это сокет.

Ответы

Ответ 1

Проблема с SimplSockets в том, что я не понял, как использовать делегат, необходимый в конструкторе.

Ниже приведен пример клиента/сервера, который перекликается с данными, указанными вами. Я понятия не имею, что я должен делать вместо Thread.Sleep(), поэтому я оставляю это там, если у кого-то нет лучшего предложения.

private static void ConnectUsingSimpleSockets()
{
    int maxClients = 50;
    int maxPeers = 10;

    var socketCreator = () => new System.Net.Sockets.Socket(SocketType.Stream, ProtocolType.Tcp);

    using (var client = new SimplSockets.SimplSocket(socketCreator, 5000, 10, true))
    {
        client.MessageReceived += client_MessageReceived;
        client.Error += client_Error;

        var ss = new System.Net.IPEndPoint(BitConverter.ToInt32(IPAddress.Parse("127.0.0.1").GetAddressBytes(), 0), 4747);
        if (client.Connect(ss))
        {
            Console.WriteLine("type something..");
            while (true)
            {
                string resul = Console.ReadLine();

                byte[] data = client.SendReceive(UTF8Encoding.UTF8.GetBytes("Client Send: " + resul + DateTime.Now));

                if (data == UTF8Encoding.UTF8.GetBytes("END"))
                {
                    break;
                }
                Console.WriteLine(UTF8Encoding.UTF8.GetString(data));

            }
        }
        client.Close();


        client.Listen(ss);
        while (true)
        {
            Console.WriteLine("sleeping");
            Thread.Sleep(7000);
        }
        client.Close();
    }
}