Я создал прокси-приложение, которое отправляет и получает запросы и ответы на уровне 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();
}