Я создаю порт вперед в C#, используя сокеты TCP. Ему не нужно беспокоиться об используемом протоколе приложения.
Однако, в зависимости от протокола приложения, размер пакета может влиять на протокол ... Например, при аутентификации с помощью FTP конечные байты (00) могут привести к ошибкам при отправке ПОЛЬЗОВАТЕЛЯ и ПАРОЛЯ через порт вперед. . Итак ... я решил удалить конечные байты, удалив последнюю последовательность 00 ...
Но протокол s sh начал сбиваться ... Удалив конечные байты, я заканчиваю получение искаженных пакетов ...
Решение, которое я думал, было бы получить фактический размер данных, когда они сначала попадают в порт, а затем переслать точный размер пакетов конечной точке.
Мой вопрос в том, как получить фактический размер данных, когда они попадают в сокет, например: когда я использую socket.Receive, чтобы получить байты, отправленные в инструмент переадресации порта (простым s sh blabla@someIP), как узнать последний байт реальных данных? Последний пакет всегда будет иметь меньше байтов, чем фактический размер буфера, но я понятия не имею, как отличить дополнительное выделяемое пространство от фактических данных в виде 00.
OBS: Я использую класс Socket и получаю , Функции отправки.