Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ServerSocket , напрягает отправка ответа клиенту по номеру конне


Страницы:   1 2

ZV ©   (2011-01-27 12:59:00) 

Ситуация такая – клиенты шлют сообщения на сервер для их обработки, обработка в некоторые моменты времени  происходит медленнее чем приходят запросы от клиента поэтому приходиться буферизировать запросы для дальнейшей обработки при буферизации запроса от клиента я сохраняю номер коннекта клиента для того что бы  потом знать кому отправить ответ.
Все работает нормально до  момента  когда – клиент прислал запрос, программа его сохранила и сохранила номер коннекта , запрос ждет своей  очереди, и в этот момент какой то клиент  находящейся по номеру коннекта ниже того клиента который ждет ответа  отключается, получается что теперь клиенту который ждет ответ  соответствует другой номер коннекта и когда запрос будет обработан то ответ будет отправлен по номеру коннекта сохранённому перед обработкой , получается что ответ получает не тот клиент .
Можно конечно сохранять перед обработкой  не номер коннекта  клиента, а  его IP , но тогда при отправке ответа клиенту придется перебрать все активные коннекты на соответствие нужному  IP
адресу , хорошо если их с десяток , а если будет  200, хотя если это займет  не больше 2мс  то пойдет.
Как  быть? Кто что посоветует?


Sha   (2011-01-27 16:51:00) [21]

Телепаю, что это у него номер позиции в списке соединений


KSergey   (2011-01-27 16:48:00) [22]

> ZV ©   (27.01.11 14:56) [9]
> зная номер коннекта клиента

Не понятно что есть "номер коннекта клиента".
и почему он изменяется, если один из клиентов отваливается??
как устроен это самый учет коннектов сейчас?
в примерах, пожалуйста.


Плохиш   (2011-01-27 16:45:00) [23]


> Сервер остановлен на пару дней для устранения проблемы которую
> я привел выше. По этому времени на изучение теории нет,
> надо быстро искать решение на практике. Каждый день простоя
> сервера сервера, приносит серьезные финансовые потери и
> не довольство клиентов.

Ну продолжайте ездить на своём велосипеде.


Sha   (2011-01-27 16:38:00) [24]

ZV ©   (27.01.11 13:52) [5]

>> Надо ввести понятие Сессия
> А это как? Где на это понятие можно посмотреть ?

Это запись или объект, хранящие необходимую тебе информацию о соединении.
Сохраняй адрес записи или ссылку на объект.


ZV   (2011-01-27 14:56:00) [25]


> Хэндл сокета или ссылка на экземпляр класса-обёртки для
> сокета вполне однозначно идентифицируют клиента.

Без примера я не пойму о чем идет речь.
Радует то что решение есть но жаль что я не могу понять об чем вы


> Какая вам разница, что переберать, номера, хэндлы, адреса?

Так дело в том что я ни чего не перебираю , зная номер коннекта клиента я просто подставляю его и ответ отправлен кому надо (но увы не всегда из за выше описанной проблемы)
Сервер работает таким образом по событию таймера программа проходит по всем коннектам и проверяет размер входных данных каждого клиента, если он соответствует нужному размеру то отправить пакет данных   на обработку прикрепив к нему номер коннекта клиента приславшего данный запрос. Процедура обработки после того как обработает пакет данных отсылает ответ по номеру коннекта который был перекреплен к пакету данных.


DiamondShark   (2011-01-27 14:36:00) [26]

А нафига вам какой-то номер клиента?
Хэндл сокета или ссылка на экземпляр класса-обёртки для сокета вполне однозначно идентифицируют клиента.

Какая вам разница, что переберать, номера, хэндлы, адреса?
В 2 мс уложится линейный перебор статыщьмильёнов простых значений.
Но в случае ссылки на объект или хэндла никакого перебора не надо вообще.


ZV   (2011-01-27 14:13:00) [27]


> Может всё-таки почитать теорию

А что без технологии распределенных систем мою проблему не решить?
Сервер остановлен на пару дней для устранения проблемы которую я привел выше. По этому времени на изучение теории нет, надо быстро искать решение на практике. Каждый день простоя сервера сервера, приносит серьезные финансовые потери и не довольство клиентов.


Плохиш   (2011-01-27 14:03:00) [28]

Может всё-таки почитать теорию и технологии распределённых систем. В делфи даже есть мастера для создания нескольких вариантов таких сиатем.


ZV   (2011-01-27 13:52:00) [29]


> Надо ввести понятие Сессия

А это как? Где на это понятие можно посмотреть ?


Anatoly Podgoretsky   (2011-01-27 13:47:00) [30]

> ZV  (27.01.2011 12:59:00)  [0]

Надо ввести понятие Сессия


brother   (2011-01-27 13:16:00) [31]

тогда я спокоен...


ZV   (2011-01-27 13:15:00) [32]


> у меня дежаву?

Нет :)


brother   (2011-01-27 13:11:00) [33]

у меня дежаву?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо