![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| polakwilno |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 14.8.2006 Репутация: нет Всего: нет |
Добрый день,
Ситуация такая: Создаю Н потоков (в одной ява програме), и каждый из них конектится к тому-же серверу. Проблема в том, что кодга один из них вызывает Close() метод, закрывается соединение и у других клиентов (у всех оставшихся Н-1 потоков). 1. Почему? (какойто общий идентификатор или что?) 2. Как с этим боротся? (т.е. есть-ли возможность работы нескольких клиентов из одной программы? просто хотел написать эмулятор клиентов и протестить сервер...) |
|||
|
||||
| neiron |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 18.4.2006 Где: Краснодар Репутация: нет Всего: 4 |
У меня для тестирования сервака примерно такая же тулзень написана. Всё корректно работает.
Ты бы хоть кусочек кода показал - где и что открывается, что в потоках делается, и как всё закрывается. |
|||
|
||||
| polakwilno |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 14.8.2006 Репутация: нет Всего: нет |
Ясненько...
Вечерком вкину код Спасибо ;) |
|||
|
||||
| polakwilno |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 14.8.2006 Репутация: нет Всего: нет |
Извиняюсь, был в отпуске )
Похоже я несовсем правильно описал ситуацию (или теперь по какимто причинам програма ведет себя по другому). Просто когда клиентов больше чем 3, иногда разрывается соединение раньше времени с некоторыми клиентами. Как все работает: после конекта к серверу клиент шлет строку "char(0x01)|ИМЯ". Сервер сохраняет ИМЯ и высылает клиенту строку "r", получив которую клиент закрывает свой сокет. Cервер, обнаружив разрыв соединения, выводит сообщение, что клиент с именем ИМЯ отсоеденился. Проблема в том, что если сделать, скажем 10 клиентов (лучше сразу 500 для 100% эфекта) то будет видно, что с некоторыми клиентами связь разрывается еще до того, как сервер сохранит имя этого клиента. Я уверен, что что-то не то с дисконектом, потомучто если ни одного клиента не закрывать, то ни одно из соединений не закрывается. Если-же все закрывать сразу после регистрации (после получения строки "r"), то некоторые соединения разрываются сами по себе (иначе сервер имел-бы имя этого клиента) Вот сам код Сервер Main.java
Client.java
Клиент Main.java
Client.java
Вот пример того, что выводится:
Если чтото плохо обьяснил - говорите, постараюсь уточнить. |
||||||||||
|
|||||||||||
| ivg |
|
||||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 3 Всего: 81 |
polakwilno, в последнем листинге удалите 62 строку:
Это сообщение отредактировал(а) ivg - 10.9.2008, 22:19 |
||||
|
|||||
| polakwilno |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 14.8.2006 Репутация: нет Всего: нет |
Эх... как это чаще всего и бывает, глупая ошибка... Огромное спасибо, ivq |
||||||
|
|||||||
![]()
|
| Правила форума "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. |