2012-06-08 2 views
1

Я программирую Tcp-сервер для XNA-игры, которую меня и друг создают, и мне было интересно, как вы отправляете конкретный клиент, подключенный к серверу с помощью NetworkStream. Например, вы можете получить позицию игрока хоста и отправить его на сервер, который отправит это другому подключенному клиенту.Сетевой поток и несколько соединений

+0

Я следил за учебником, объясняющим, что TcpClient и NetworkStream, похоже, имеют .Write(). Сначала я изучил серверы сокетов, и вы можете использовать .SendTo(), чтобы сделать это, но я не уверен, как с помощью NetworkStream. – tcoy

+0

На сервере потребуется несколько NetworkStream, по одному для каждого клиента. Предполагая, что количество клиентов не фиксировано, это будет означать, что вам нужно будет закодировать сервер, чтобы распределять и освобождать их по мере необходимости. – ekolis

+0

@ekolis Я понимаю, что прошло много времени с момента публикации, но какую стратегию вы бы использовали для распределения и нераспределения клиентов? – Adsy2010

ответ

2

Вам нужно будет прочитать на несколько вещей:

Это поможет вам начать:

  1. TcpListener
  2. TcpClient

Ваш сервер должен иметь TcpListener , Создайте список клиентов, если вы хотите поддерживать несколько клиентов. Вы получите один TcpClient для каждого подключенного клиента. Прочитайте данные с NetworkStream на каждом из этих клиентов. Когда вы получаете данные по одному из них, отправьте их другим.

Вам нужно будет определить какой-то протокол, чтобы вы знали, когда сообщение от клиента будет завершено, и вы можете отправить его вперед.

+0

Вы можете определить свой собственный протокол, конечно. Но есть и другой вариант: использовать существующий протокол, например, из WCF или, например, JSON-RPC. – svick

Смежные вопросы