Я занимаюсь простым программированием сокетов на C #.Я пытаюсь аутентифицировать пользователя, считывая имя пользователя и пароль с клиентской консоли, отправляя учетные данные на сервер и возвращая статус аутентификации с сервера.Основные вещи.У меня вопрос: как мне обеспечить, чтобы данные были в формате, который сервер и клиент ожидают ?
Например, вот как я читаю учетные данные пользователя на клиенте:
Console.WriteLine("Enter username: ");
string username = Console.ReadLine();
Console.WriteLine("Enter plassword: ");
string password = Console.ReadLine();
StreamWriter clientSocketWriter = new StreamWriter(new NetworkStream(clientSocket));
clientSocketWriter.WriteLine(username + ":" + password);
clientSocketWriter.Flush();
Здесь я разделяю имя пользователя и пароль двоеточием (или другим символом) на стороне клиента,На сервере я просто разделяю строку, используя «:» в качестве токена.Это работает, но кажется вроде ... небезопасно.Разве не должно быть какого-то токена-разделителя, который является общим между клиентом и сервером, поэтому мне не нужно просто жестко кодировать его вот так?
Это похоже наответ сервера.Если аутентификация прошла успешно, как мне отправить ответ обратно в формате, который ожидает клиент?Могу ли я просто отправить строку «SUCCESS» или «AuthSuccessful = True / False»?Как бы я мог убедиться, что клиент знает, в каком формате сервер отправляет данные (кроме простого кодирования их в клиент)?
Я думаю, что я спрашиваю, как разработать и реализовать протокол уровня приложения.Я понимаю, что это уникально для вашего приложения, но какой типичный подход обычно используют программисты?Кроме того, как вы поддерживаете согласованный формат?Буду очень признателен за ссылки на статьи по этому вопросу.