![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
variag |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2009 Репутация: нет Всего: нет |
Здравствуйте!
Меня зовут Владимир. Мне нужно написать сетевое приложение - игру "Камень-ножницы-бумага" в Visual Studio 6.0 с использованием библиотек Winsock и MFC (класс CSocket применять нельзя). Есть сервер, есть два клиента (если два клиента уже подключились к серверу, то третьему, совершающему подключение, должно быть отказано в этом без блокирования интерфейса). Каждый клиент отправляет серверу слово: или "камень", или "ножницы", или "бумага". Сервер должен принять эти данные, решить, кто выиграл, и отправить строки типа "Вы выиграли" и "Вы проиграли" соответственно клиенту-победителю и клиенту-проигравшему. У меня есть работающие заготовки клиента и сервера. Они прикреплены ниже. Чтобы запустить программы, их надо скомпилировать (в папках проектов нет папки Debug). Очень прошу помочь. С уважением, Владимир. Это сообщение отредактировал(а) variag - 19.8.2009, 21:25 Присоединённый файл ( Кол-во скачиваний: 28 ) ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
а в чем вопрос собственно?
![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
variag |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2009 Репутация: нет Всего: нет |
Вопрос вот в чем: как организовать программу? Я думаю так.
Сервер загружает библиотеку Winsock, создает сокет для прослушивания, привязывает его к локальному интерфейсу, переводит этот сокет в режим прослушивания (второй параметр у функции listen равен 2, так как надо, чтобы подключалось только два клиента), затем принимает подключения клиентов и обслуживает каждого из двух клиентов в отдельном потоке. Что значит обслуживает: сначала принимает строку от каждого клиента: "камень", "ножницы" или "бумага", потом вызывает функцию для определения победителя и проигравшего (ее я, в принципе, сделал), затем отправляет строки-результаты клиентам. Что касается клиентов, то, я полагаю, что код имеющегося клиента менять не надо, так как он делает то, что должен: сначала отправляет данные серверу, а потом получает строку от сервера. Основная работа должна быть над сервером. Забыл сказать: заготовки, что у меня есть - это эхо-серверное приложение. То есть, мне надо переделать эхо-сервер в сервер, обслуживающий двух клиентов и обрабатывающий данные, полученные от них. Я пробовал писать, но работающего приложения у меня не получилось. Это сообщение отредактировал(а) variag - 20.8.2009, 15:47 |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 1 Всего: 14 |
||||
|
||||
variag |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.3.2009 Репутация: нет Всего: нет |
Я тоже думаю, что не для этого. Этот второй параметр, вроде, означает максимальную длину очереди соединений, ожидающих обработки. Может быть, можно так: Принять сначала двух клиентов, а когда принимаем третьего, то после принятия отправить ему строку типа "Вы лишний" и разорвать с ним соединение через функцию closesocket(SOCKET)? |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |