![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ServerSocket , напрягает отправка ответа клиенту по номеру конне
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]у меня дежаву?