Есть ли какие-либо статьи или советы по созданию сервера чата C ++ с клиентом C #? - PullRequest
1 голос
/ 30 апреля 2009

Мой текущий класс планирует создать базовую сетевую игру, но мы решили взять на себя задачу создания сервера C ++ с клиентом C #. Я понимаю, что это, вероятно, трудная задача, но мне было интересно, есть ли какой-нибудь совет, как это сделать.

Извините, у меня нет больше информации, чем эта. Мы только начинаем и хотим убедиться, что это возможно в течение того промежутка времени, который у нас есть.

Ответы [ 5 ]

5 голосов
/ 30 апреля 2009

Это отлично работает. C # и C ++ поддерживают сетевые соединения TCP и UDP во многих вариантах. Либо будет работать нормально для клиента или сервера.

Основные проблемы, на которые вам нужно обратить внимание: решить, как передавать ваши данные, и убедиться, что все пакеты, которые вы пропускаете через провод, сериализуются / десериализуются одинаково.

Это было бы проще, если бы вы использовали один и тот же язык (или, по крайней мере, библиотеки) с обеих сторон, то есть: если вы использовали C ++ / CLI для сервера и застряли с одними и теми же управляемыми инструментами .NET для работы с передачей данных.

3 голосов
/ 30 апреля 2009

Это на самом деле не большая проблема - до тех пор, пока вы придумаете хороший протокол. Битам на проводе не важно, какой язык использовался для написания программы, которая их интерпретирует.

Под протоколом я имею в виду, что вам нужно четкое понимание того, кто должен что делать, когда, что говорить, и что ожидать обратно.

Например, эхо-сервер и его клиент могут ожидать, что

  • клиент говорит первым
  • есть понятный идентификатор для обозначения конца ввода клиента
  • клиент будет ждать ответа сервера, прежде чем снова говорить
  • есть хорошо понятный идентификатор для обозначения конца вывода сервера.

И так далее. Другой клиент, который отправил длину сообщения перед сообщением вместо использования идентификатора конца ввода, не будет работать с исходным сервером из-за несовместимости протокола.

Протоколы могут быть гибкими, но вы должны учитывать эту гибкость в самом протоколе.

2 голосов
/ 30 апреля 2009

Как все говорили, это не проблема, если ваш протокол чата хорошо разработан. Только если вы использовали хаки, такие как BinaryFormatter, для прямой сериализации объектов CLR в провод, у вас возникнет проблема ...

Я бы порекомендовал вам использовать существующие протоколы (например, IRC) и / или библиотеки в той степени, в которой это разрешено.

0 голосов
/ 01 мая 2009

Для программы чата попробуйте использовать протокол чата.

Изучите XMPP и посмотрите, сможете ли вы его использовать или урезанную версию. Начиная с того, что выяснили другие, никогда не бывает плохой идеей. По крайней мере, вы можете увидеть, что вам не нравится в этом. :)

0 голосов
/ 30 апреля 2009

Если все работает в одном домене Windows, вы можете рассмотреть DCOM. В противном случае я бы пошел на веб-сервисы (набор инструментов SOAP для C ++) или, может быть, REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...