Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написать сетевой режим. 
:(
    Опции темы
Yoda
  Дата 12.1.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну собственно мне понадобилось написать игру на VCL типа "Бойцовского клуба" (Online проект www.combats.ru). На форме будут лежать: TClientSocket и TServerSocket (т.е. каждая копия игры сможет стать сервером, типа Counter-Strike). Работать сетевой режим должен примерно так:

//Для удобства первая копия игры будет "alpha", а другая "beta".

1. alpha создает сервер, и сразу подключаецца к нему.
2. beta подключаецца к созданому ранее серверу. (Значит на сервере уже висит 2 клиента).
3. alpha посылает свои значения (хелсов, маны и т.д.) beta, а beta в свою очередь посылает свои значения alpha.
4. Ну еще в игре будет присутвовать кнопка по нажатию на которую, твоему аппаненту будут посылацца значения твоих блоков и ударов.

Я не прошу написать за меня игру - просто подскажите как это правильно все сделать.

ЗЫ Для меня осталось не понятным, как отправлять значения (хелсов, маны и т.д.) всем кроме меня...

Это сообщение отредактировал(а) Yoda - 12.1.2006, 13:01
PM MAIL   Вверх
Snowy
Дата 12.1.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Ты посылаешь серверу свои значения.
Сервер их получает. Также он знает номер коннекта, с которого пришли данные.
Сервер начинает перебирать все коннекты и отправлять данные всем, у кого номер коннекта не равен номеру, от которого получены данные.
Все просто.
Ну даже, если он и отправить тебе данные - хуже не станет smile

P.S. Просьба писать на русском языке.
PM MAIL   Вверх
Yoda
Дата 12.1.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Также он знает номер коннекта, с которого пришли данные.

А мне как узнать номер коннекта с которого пришли значения ?
Цитата

Ну даже, если он и отправить тебе данные - хуже не станет

Ну смотри - например я получю значения (имени персонажа, кол-во хелсов) и присвою их какому нибудь labelEnemyName:= GotName.... А это окажутся мои значения smile
Цитата

P.S. Просьба писать на русском языке.

Ок smile
PM MAIL   Вверх
Snowy
Дата 12.1.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Цитата(Yoda @ 12.1.2006, 13:25 Найти цитируемый пост)
А мне как узнать номер коннекта с которого пришли значения ?

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

Цитата(Yoda @ 12.1.2006, 13:25 Найти цитируемый пост)
например я получю значения (имени персонажа, кол-во хелсов) и присвою их какому нибудь labelEnemyName:= GotName...

А что ты будешь делать, если соединятся 4 клиента?
Как ты их будешь различать?
У каждого клиента должен быть свой идентификатор.
Вот и смотри - если получил данные о враге со своим идентификатором, то не считай себя врагом smile
PM MAIL   Вверх
Yoda
Дата 12.1.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

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

Можно поподробней smile
PM MAIL   Вверх
Snowy
Дата 12.1.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



В OnExecute ты можешь получить TIdPeerThread.Connection.
При отправке ты перибераешь все Connection и отправляешь данные всем, кто не есть этот.
PM MAIL   Вверх
Yoda
Дата 12.1.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я говорю о закладке Internet, компонентах: ServerSocket1, ClientSocket1... OnExecute там не нашел smile.

P.S. Юзать желательно их..
PM MAIL   Вверх
F1reF0x
Дата 13.1.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



IdTCPClient IdTCPServer как альтернатива, кстати там есть onExecute smile smile
PM MAIL   Вверх
Yoda
Дата 13.1.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ты вопрос видел ? Как осуществить сетевой режим с использованием : ServerSocket1, ClientSocket1...
Не ужели никто не знает ?! smile
PM MAIL   Вверх
_hunter
Дата 13.1.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



что значит "как осуществить"? как с этимим компонентами работать? так книги цитировать тут вряд ли кто-то будет...
поищи по форуму, по сети...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
F1reF0x
Дата 13.1.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Yoda
Там всё просто. посмотри в хелпе какая процедура отвечает за отправку данных у клиента, и как принимать данные, больш тут почти ничего и не требуется (хост и порт ещё понятно).
PM MAIL   Вверх
Yoda
Дата 13.1.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня вопрос пока такой...У меня к серверу будет подключено несколько клиентов... Вот вопрос как отправить значения(хелсов, маны) всем клиену(ам) кроме того, который прислал эти значения.
PM MAIL   Вверх
_hunter
Дата 13.1.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



при подключении нового клиента заноси его в какой-нить список и потом отправляй значения всем, кто есть в этом списке


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Yoda
Дата 13.1.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



....Допустим есть 2 клиента...1 из клинетов шлет на сервер значения (все таже мана и хелсы). Сервер их получает.... Как отослать эти значения ТОЛЬКО другому клиенту?

Это сообщение отредактировал(а) Yoda - 13.1.2006, 19:09
PM MAIL   Вверх
_hunter
Дата 13.1.2006, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



что значит "ТОЛЬКО другому"?
слать точно так же как и ТОЛЬКО этому, но другому...

P.S.
таки почитай книгу...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




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


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

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