![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Toland2 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.10.2011 Репутация: нет Всего: нет |
Уважаемые программисты, помогите пожалуйста разобраться с одной проблемой.
Я задумал сделать очень простую сетевую игру танчики. В клиенте создается TImage с изображением танка (Tank:array [1..10] of TImage;), его номер отправляется на сервер и рассылается всем подключенным клиентам. И на тех клиентах создаются TImage с таким же номером. В клиенте передвигаю TImage по форме, её кординаты передаются на сервер и рассылаются всем подключенным клиентам. У меня есть вот такая структура, которую я передаю через сокеты:
Сначала эта структура попадает на сервер и он рассылает её всем клиентам вот таким образом:
Все работает как надо, но с большими задержками. Я понимаю, что этот способ совсем неправельный и хотел бы попросить Вас просто пнуть меня в нужном направлении. Какие компоненты лучше использовать? Может есть какая-нибудь статья или пример? Заранее большое спасибо. |
||||
|
|||||
| jhonyxakep |
|
|||
![]() Divide Et Impera ![]() ![]() Профиль Группа: Участник Сообщений: 983 Регистрация: 7.4.2009 Где: Что, Когда? Репутация: нет Всего: 8 |
Как вы принимаете данные у клиента?
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Насколько большими? По идее, должно быть не более 500мс (клиент => сервер) + 500мс (сервер => клиентЫ), ибо размер структуры всего 12 байт (если это не 64бит компилятор Любые, с которыми комфортно работать. Сами компоненты скорости не добавят и не отберут ее. Каждый способ имеет право на существование Есть. Wiki - алгоритм Нагла. И недавно здесь на форуме давал код по отключению этого алгоритма. Присоединяюсь к вопросу. P.S. Вы уверены, что "тормоза" идут именно из-за сетевого обмена? |
|||
|
||||
| Toland2 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.10.2011 Репутация: нет Всего: нет |
Принимаю данные через таймер. Не знаю правильно это или нет, но другого способа я не знаю. Вот часть кода таймера:
Если двигается только один танк, то задержки почти не ощущаются, но когда начинают двигаться 2 и более танка, то они становятся все больше и больше
Вы мне его и давали Я не знаю в чем причина:( Тестировал на разных компьютерах в разных сетях и результат один и тот же. |
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 6 Всего: 72 |
Так переделайте и код сервера под отключение Нагла. Для D7 это (уже переделанное) выглядит так:
Это первое. Второе - принимать из сети что-то по таймеру, мягко говоря, некорректно. Попробуйте установить и воспользоваться (ну и разобраться, что да как - код неплохо комментирован) вот этими компонентами (во вложении) - они как нельзя лучше вкупе с отключением набившего оскомину алгоритма подойдут к Вашей задаче. В особенности - методы сервера "отправить всем". В комплекте - небольшой пример. Самое главное изменение, которое нужно будет сделать - это прямо в событии приема (на сервере) передать всем тот же Stream. Таким образом Вы обезопасите себя от множества проблем, в том числе - и от работы с потоками (они в представленных компонентах не задействуются, таким образом можно безбоязненно обращаться откуда угодно к форме и визуальным компонентам). Присоединённый файл ( Кол-во скачиваний: 4 )
SimpleTCPTransfer1.zip 10,97 Kb |
|||
|
||||
| Toland2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.10.2011 Репутация: нет Всего: нет |
kami, спасбо большое! Уже в который раз выручаете! Буду разбираться.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |