В настоящее время я получаю данные всякий раз, когда это 17 байт. Однако у меня есть два типа данных: 17 байт и 10 байт. Как я могу обработать его, когда у меня есть два типа данных?Получение данных клиента TCP
byte[] message = new byte[17];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
//blocks until a client sends a message
bytesRead = clientStream.Read(message, 0, 17);
}
catch
{
//a socket error has occured
break;
}
if (bytesRead == 0)
{
//the client has disconnected from the server
break;
}
Я видел похожие вопросы, но это на C, и я не мог понять. Пожалуйста, помогите мне.
Для формирования кадрирования сообщений необходим протокол приложения. Вы предполагаете, что получаете 17-байтовое сообщение, но вы вполне можете читать 10-байтовое сообщение и первые 7 байтов следующего сообщения. Мы не можем ответить на это за вас. – CodeCaster
Вы можете позволить своим типам данных быть 18 и 11 байтами. Первый байт будет идентификатором. Вы читаете один байт, проверяете его на тип сообщения, чтобы узнать, нужно ли читать 10 или 17 байт. Затем вы читаете свои данные. – Holger
@CodeCaster Спасибо. Попробуй свое предложение. – active92