Я пишу программу, которая будет иметь как серверную, так и клиентскую стороны, и клиентская сторона будет подключаться к серверу, размещенному на той же самой программе (но на другом ее экземпляре и обычно на другой машине). В общем, я контролирую оба аспекта протокола.
Я использую BeginReceive()
и BeginSend()
с обеих сторон для отправки и получения данных. Мой вопрос, если эти два утверждения верны:
Использование вызова BeginReceive () даст мне все данные, которые были отправлены одним вызовом BeginSend () на другом конце, когда вызывается функция обратного вызова.
Использование вызова BeginSend () отправит все данные, которые я передал, на другой конец, и все они будут получены одним вызовом BeginReceive () на другом конце.
На самом деле они в основном одинаковы.
Если ответ «нет», то, как я предполагаю, основано на том, что я прочитал о сокетах, каков наилучший способ обработки команд? Я пишу игру, в которой будут такие команды, как PUT X Y
. Я думал о добавлении специального символа (например, #
) в конец каждой команды, и каждый раз, когда я получаю данные, я добавляю их в буфер, а затем анализирую их только после того, как обнаружив #
.