IOException при написании 206 частичного содержимого ответа - PullRequest
1 голос
/ 22 октября 2019

Я создал прокси-приложение, которое отправляет и получает запросы и ответы на уровне TCP. Однако он работает нормально, когда ответ является частичным содержимым, и ответ успешно отправляется клиенту, но приложение выдает IOException. Это не происходит с другими кодами состояния.

IOException «Невозможно записать данные в транспортное соединение: установленное соединение было прервано программным обеспечением на вашем хост-компьютере» в await networkStream.WriteAsync (msgBuffer,0, длина);

Чтобы противостоять этому, я попробовал несколько способов отправки байтов. Ничто из этого не могло решить проблему. Я несколько раз сравнивал количество байтов, и они показались мне правильными.

Я не уверен, поможет ли это, но вот код внутри моей функции записи. MsgBuffer - это байтовый массив ответа, который нужно отправить.

NetworkStream networkStream = tcpClient.GetStream(); 

/* Keep writing until the whole message has been sent */
while (msgBuffer.Length > 0)
{
  int length = (Buffersize > msgBuffer.Length ? msgBuffer.Length : Buffersize);
  await networkStream.WriteAsync(msgBuffer, 0, length);
  msgBuffer = msgBuffer.Skip(length).ToArray();
}
...