Я хочу сделать проект, который будет включать стороны сервера и клиента, используя сетевую связь TcpSocket (я использую TcpListener для сервера и TcpClient для стороны клиента) и многопоточность. Но многопоточность больше не доставляет мне проблем.
Но то, что он делает, это нечто другое ... поскольку проект не будет включать в себя только чат, (но также создание новой игры, присоединение к игре, ходы, выход из игры), мне нужно как-то определить формат сообщения.
Я читал о протоколах обмена сообщениями и об использовании первых нескольких байтов каждого сообщения, чтобы сообщить серверу, что они пытаются сделать. Проблема в том, что я НЕ знаю, как это сделать. Так может кто-нибудь показать мне пример создания форматированного сообщения?
Может быть, стоит упомянуть, что я использую классы StreamReader и StreamWriter для передачи данных между сервером и клиентами. Это хороший способ?
Добавить:
Моя проблема сейчас в том, как разделить эти данные, чтобы сервер знал, что с ними делать. Я читал об использовании 1-го байта, чтобы «быть зарезервированным» для типа сообщения. Но проблема в том, что я не знаю, как решить эту проблему. До сих пор я использовал только классы StreamReader и StreamWriter для передачи только строк. Если я использую этот вид кодирования, все станет слишком запутанным (не узнаваемым), если вы понимаете, о чем я.
Так что мне нужно сделать что-то вроде этого:
Для отправки байтов:
Первые несколько байтов тип данных (но я не знаю, какой класс использовать, может быть BinaryWriter и BinaryReader на другой стороне ??)
остальная часть сообщения
на сервере У меня должен быть некоторый код, который распознает эти «первые несколько байтов», чтобы код знал, что делать с тестом сообщения.
и на основе этих «первых нескольких байтов» код должен отправлять данные клиентам
Есть ли у вас какие-либо идеи о том, как это может выглядеть, я имею в виду как скелет (что-то базовое, поэтому я могу работать с ним).
Каждая помощь будет очень признательна.
Я нашел один пример здесь на stackOverflow.com. Кажется, это код в правильном направлении. Как вы думаете, ребята?