C # проблема с получением данных - PullRequest
2 голосов
/ 05 мая 2011

Когда я посылаю данные со стороны клиента много раз один за другим очень быстро, я не получаю эти данные отдельно на сервере.Я получаю их как один большой пакет данных.Мне нужно отправить ответ на все полученные данные.Но я не могу этого сделать, потому что эти данные объединяются в один большой пакет.Как я могу отправить ответ на все полученные данные?Вот код метода обратного вызова на сервере:

    private void RecieveCallback(IAsyncResult asyncResult)
    {
        ConnectionInfo connection = (ConnectionInfo)asyncResult.AsyncState;
        try
        {
            int bytesRead = connection.Socket.EndReceive(asyncResult);

            if (bytesRead > 0)
            {
                for (int i = 0; i < bytesRead; i++)
                    connection.FullBufferReceive.Add(connection.BufferReceive[i]);
                if (bytesRead == connection.BufferReceive.Length)
                {
                    connection.Socket.BeginReceive(connection.BufferReceive, 0, connection.BufferReceive.Length, 0,
                                                   new AsyncCallback(RecieveCallback), connection);
                    Console.WriteLine("Bytes recieved -- " + bytesRead + " by " + connection.Id);
                }
                else
                {
                    Console.WriteLine("Bytes recieved " + bytesRead + " by " + connection.Id);

                    _serverController.StartProcess(connection);
                }
            }
            else  
                CloseConnection(connection);
        }
        catch (Exception e)
        {
            CloseConnection(connection);
            Console.WriteLine(e.ToString());
        }
    }

1 Ответ

3 голосов
/ 05 мая 2011

Если ваши сокеты являются TCP (я не могу сказать из кода), это ожидаемое поведение, так как TCP не создан как UDP. Вам необходимо самостоятельно разграничить данные.

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