Асинхронный / Синхронный и TCP или UDP - PullRequest
2 голосов
/ 12 февраля 2012

Я очень озадачен синхронным и асинхронным сокетом в C #, я хочу разработать игровой процесс в локальной сети, но я не понимаю, какой из них лучше для моей игры Hangman.

Эта игра может работать в режиме 1 игрокаили режим 2 игроков.

В режиме 1 игрока только игрок взаимодействует с serer

Но в режиме 2 игроков 2 игрока взаимодействуют с сервером по очереди.Это означает, что если игрок А угадает неправильное слово, он теряет свой ход, а игрок Б принимает этот ход.

Можете ли вы дать мне совет относительно Синхронного и Асинхронного.

Кроме того, как клиент может найти сервересли клиенту не нужно вводить IP-адрес сервера?это означает, что я должен выбрать между TCP и UDP

, и последний вопрос: могу ли я создать сервер асинхронный, но клиенты синхронны, это нормально?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

так, что касается ваших вопросов:

Можете ли вы дать мне совет по поводу Синхронного и Асинхронного: в вашем случае, учитывая сложность приложения, вы можете использовать либо синхронизирующие, либо асинхронные сокеты, поскольку twilson заявил, что синхронизирующие сокеты блокируют вашиОсновной поток, в то время как асинхронные нет, если у вас есть проблемы с производительностью, перейдите к асинхронным сокетам

Кроме того, как клиент может найти сервер, если клиенту не нужно вводить ip сервера?это означает, что я должен выбрать между TCP и UDP: хорошо, между TCP и UDP-соединениями есть большая разница, вы обычно используете UDP (без установления соединения), когда у вас есть проблемы с производительностью, такие как приложения VoIP, игры в реальном времени, видео-чат и т. д., в то время как вВ других случаях вы используете TCP, так что в вашем случае TCP должен вас устраивать.

и последний вопрос: могу ли я создать сервер асинхронным, но клиенты синхронны, это нормально?Да, вы могли бы использовать этот тип реализации, даже если было бы полезно иметь сокеты одинакового типа как на клиентах, так и на серверах.

1 голос
/ 12 февраля 2012

Важной частью выбора Asynchronous vs Synchronous является то, как вы делаете взаимодействие взаимодействующим с вашим потоком GUI. Не позволяйте синхронному сокету блокировать ваш пользовательский интерфейс. Я вижу, что статья здесь дает представление о том, чего ожидать, и дает некоторые рекомендации по использованию асинхронного программирования в Windows. Советы по Winsock

Ваш второй вопрос о TCP / UDP: между ними есть много различий, о которых вы должны знать. В первую очередь, TCP будет обеспечивать гарантированную доставку пакетов при действующем соединении. Учитывая вашу ситуацию и простые требования и отсутствие потребностей в производительности. TCP, вероятно, ваш лучший выбор. Если вы разрабатываете высокопроизводительную игру, в которой вам необходимо учитывать пропущенные пакеты и лучше обрабатывать задержку, то UDP становится лучшим вариантом, но тогда вам нужно учитывать, что происходит, когда вы отбрасываете пакеты и получаете такие вещи, как пакеты Out of Order. TCP скрывает от вас всю эту сложность и упростит работу с ней.

Смешивание синхронного и асинхронного клиента / сервера не должно вызывать проблем. Они знают только о самой линии связи (TCP / UDP).

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