Как отправлять и получать команды с сетевого сервера UDP через консольное приложение .NET Core - PullRequest
0 голосов
/ 20 апреля 2019

Прежде всего, извините, если решение этой проблемы уже есть.

У меня есть UDP-сервер в масштабе, который подключен к сети. Он прослушивает любые данные, отправляемые ему, и отвечает данными обратно клиенту, в зависимости от того, какая команда ему отправлена. Я смог проверить это с помощью YAT, программного обеспечения, используемого для проверки последовательной связи.

Тестирование UDP-соединения на YAT

Я хочу создать консольное приложение C # (.NET Core), которое делает то же самое. По сути, я хочу подключиться к UDP-серверу (масштабировать), отправлять ему команды и получать с него данные. Но, похоже, это не работает на принимающей стороне.

 static void Main(string[] args)
    {
        var ipAddress = "10.130.12.81";
        var portNumber = 2102;
        var ipEndPoint = new IPEndPoint(IPAddress.Parse(ipAddress), portNumber);

        try
        {
            var client = new UdpClient();
            client.Connect(ipEndPoint);

            if (client != null)
            {
                var weigh = "\nW\r";
                var data = Encoding.ASCII.GetBytes(weigh);

                client.Send(data, data.Length);
                var receivedData = client.Receive(ref ipEndPoint);
                Console.WriteLine($"Received Data: {receivedData}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }

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

Любые предложения будут полезны. Я не работал ни с чем, связанным с UDP-клиентами и серверами UDP, и это моя первая попытка.

[4/22/19]

На этот раз я создал 2 консольных приложения.

Отправитель

    static void Main(string[] args)
    {
        var udpClient = new UdpClient();
        var ipEndPoint = new IPEndPoint(IPAddress.Parse(_ipAddress), _port);
        udpClient.Connect(ipEndPoint);

        var msgSent = Encoding.ASCII.GetBytes("W\n");
        udpClient.Send(msgSent, msgSent.Length);
    }

Приемник

    static void Main(string[] args)
    {
        var udpServer = new UdpClient(2102);
        var ipEndPoint = new IPEndPoint(IPAddress.Any, _port);

        var msgReceived = udpServer.Receive(ref ipEndPoint);
        Console.Write("received data from: " + ipEndPoint.ToString());
    }

Я пытался запускать и отправлять сообщения несколько раз, но безуспешно. Не уверен, что я что-то упустил .. Я буду продолжать разбираться с этим. Если это не сработает, я попробую использовать класс Socket вместо UdpClient.

...