![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
JoGi |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
Добрый день,
Я тут с такой проблемкой столкнулся... На стороне клиента имеется апплет, который коннектится к серверу. На сервере такой код:
То есть, имеется вектор активных клиентов. Допустим, адрес к серверу www.server.ru/enter.php. Тут клиент вводит логин, пароль и потом апплет конектится к серверу. Некоторые из проблем: * если подключившийся клиент нажмет ctrl+n, откроется копия окна. Выполнив на сервере код " for all clients send 'hello world' ", сообщение поступает в новое окно, причем в 2 эгземплярах. Сообщения сервер принимает из обоих окон. * или в етом-же окне браузера клиент впишет www.server.ru/enter.php и законектится заного, то сервер шлет сообщения и на новое имя и на старое(видно в дэбагере), которое уже по идее закрыто. В обоих случаях, проверяется подключен ли клиент - если при посылке сообщение возвращается false, то сокет клиента удаляется из clients. Но как показывает практика, почемуто возвращается true. Еслиже закрыть окно браузера и залогинится через новое окно, то при попытке послать данные в закрытое окно возвращается ошибка - как и должно быть. Почемуже пока окно браузера не закрыто, хоть в него и www.google.ru пиши, сервер всеравно шлет ему сообщения без ошибок. Получается он связывается с браузером а не с аплетом ![]() ВОПРОС: Можно-ли както сравнить сокеты? Хотелосьбы получить чтото такое
Или может быть есть какойто другой способ решить эту проблему? За ранее спасибо. Это сообщение отредактировал(а) JoGi - 25.2.2006, 03:06 |
||||
|
|||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Если апплет стартовал, то он продолжает работать, даже если вы в браузер загрузили другую страницу (www.google.ru ) Если из апплета открывается новый фрейм, то окно браузера можно даже закрыть. Апплет будет работать. Соединение с апплетом должно быть уникальным. Можно идентифицировать по логину, если они уникальные в системе. Тогда при открытии сокета апплет должен передать логин пользователя и если сервер обнаружит, что сокет для этого логина уже открыт, то отказать в соединении. Для этого надо уже открытые соединения хранить в hashtable с логином в качестве ключа. Однако если пользователь неудачно закроется и сервер это не обнаружит, то второй раз пользователь не сможет зайти в систему. Это сообщение отредактировал(а) COVD - 25.2.2006, 19:00 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |