Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сетевая игра MFC-Winsock, надо написать игру камень-ножницы-бумага 
:(
    Опции темы
variag
Дата 19.8.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



Здравствуйте!
Меня зовут Владимир. Мне нужно написать сетевое приложение - игру "Камень-ножницы-бумага" в Visual Studio 6.0 с использованием библиотек Winsock и MFC (класс CSocket применять нельзя). Есть сервер, есть два клиента (если два клиента уже подключились к серверу, то третьему, совершающему подключение, должно быть отказано в этом без блокирования интерфейса).
Каждый клиент отправляет серверу слово: или "камень", или "ножницы", или "бумага". Сервер должен принять эти данные, решить, кто выиграл, и отправить строки типа "Вы выиграли" и "Вы проиграли" соответственно клиенту-победителю и клиенту-проигравшему.
У меня есть работающие заготовки клиента и сервера. Они прикреплены ниже. Чтобы запустить программы, их надо скомпилировать (в папках проектов нет папки Debug).
Очень прошу помочь.

С уважением,
Владимир.

Это сообщение отредактировал(а) variag - 19.8.2009, 21:25

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  Client___Server.rar 36,04 Kb
PM MAIL   Вверх
andrew_121
Дата 20.8.2009, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



а в чем вопрос собственно? smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
variag
Дата 20.8.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



Вопрос вот в чем: как организовать программу? Я думаю так.
Сервер загружает библиотеку Winsock, создает сокет для прослушивания, привязывает его к локальному интерфейсу, переводит этот сокет в режим прослушивания (второй параметр у функции listen равен 2, так как надо, чтобы подключалось только два клиента), затем принимает подключения клиентов и обслуживает каждого из двух клиентов в отдельном потоке.
Что значит обслуживает: сначала принимает строку от каждого клиента: "камень", "ножницы" или "бумага", потом вызывает функцию для определения победителя и проигравшего (ее я, в принципе, сделал), затем отправляет строки-результаты клиентам.
Что касается клиентов, то, я полагаю, что код имеющегося клиента менять не надо, так как он делает то, что должен: сначала отправляет данные серверу, а потом получает строку от сервера. Основная работа должна быть над сервером.
Забыл сказать: заготовки, что у меня есть - это эхо-серверное приложение. То есть, мне надо переделать эхо-сервер в сервер, обслуживающий двух клиентов и обрабатывающий данные, полученные от них.
Я пробовал писать, но работающего приложения у меня не получилось.

Это сообщение отредактировал(а) variag - 20.8.2009, 15:47
PM MAIL   Вверх
J0ker
Дата 21.8.2009, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: 1
Всего: 14



Цитата(variag @  20.8.2009,  15:23 Найти цитируемый пост)
второй параметр у функции listen равен 2, так как надо, чтобы подключалось только два клиента

этот параметр предназначен не для этого



--------------------
user posted image
PM MAIL   Вверх
variag
Дата 21.8.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.3.2009

Репутация: нет
Всего: нет



Цитата(J0ker @ 21.8.2009,  01:03)
Цитата(variag @  20.8.2009,  15:23 Найти цитируемый пост)
второй параметр у функции listen равен 2, так как надо, чтобы подключалось только два клиента

этот параметр предназначен не для этого

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

Может быть, можно так:
Принять сначала двух клиентов, а когда принимаем третьего, то после принятия отправить ему строку типа "Вы лишний" и разорвать с ним соединение через функцию closesocket(SOCKET)?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0836 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.