Нет данных от AGWPE - PullRequest
       2

Нет данных от AGWPE

0 голосов
/ 07 мая 2018

Я пытаюсь прочитать данные из сокета, подключенного к AGWP Engine. Это простой сервер TCP / IP, который по умолчанию отправляет кадры через сокет на порт 8000.

    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.Connect("10.0.0.2", 8000);
    socket.ReceiveTimeout = 3000;

    while(true)
    {
         Console.WriteLine(socket.Connected + " - " + socket.Available);
         byte[] buffer = new byte[36];
         int read = socket.Receive(buffer, 0, 0, SocketFlags.None, out SocketError error);

         Console.WriteLine(read);
    }

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

Когда я запускаю приложение AGWTracker , я правильно вижу входящие данные. Я нашел agwpe .net порт , который тоже не работает.

Согласно ответу, который я получил от socket.Available, данные не должны присутствовать в потоке. Есть ли другой способ проверить, доступны ли данные? Есть ли другой класс, который можно использовать вместо socket или socketClient?

1 Ответ

0 голосов
/ 07 мая 2018

вы передали 0 как максимальное количество байтов для получения; так что ... вы всегда будете получать ноль байтов; третий параметр обычно должен быть buffer.Length (поскольку вы используете 0 в качестве offset)

Чтения нулевой длины на самом деле иногда очень полезны (поэтому вы можете ждать данных, не занимая буферного пространства), поэтому он не помечает это как ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...