![]() |
|
Модераторы: gambit |
![]()
|
|
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Привет всем!
Есть клиент и сервер. Взаимодействуют они через сокеты. После запуска проги-сервера, клиент без проблем к нему коннектиться и работает как надо. Если клиент закрыть, то при втором запуске он уже не может нормально взаимодействовать с сервером. Не выдает никаких Exceptions, но и данные тоже не передаются. Нормальная работа возобновляется только после перезапуска сервака. Так закрывает коннектион сервер:
После закрытия консоли (клиента) этот метод всегда срабатывает. На клиенте при закрытии также срабатывает дисконнект. Во, только щас заметил, что соединение разрывается с исключением на клиенте: Unable to read data from the transport connection: A blocking operation was interrupted by a call to WSACancelBlockingCall Что это может значить и как попробовать решить проблему? Спасибо |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
код сервера в студию.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
После второго запуска клиента взаимодействие нарушается, но если подождать подольше, то на клиенте вылетает такой exception:
|
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
код клиента тоже в студию )
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Competitor |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Начинается все вот так:
Вот здесь сервак крутится асинхронно получая сообщения:
Добавлено через 2 минуты и 2 секунды Отправка сообщений сервером по той же схеме:
Асинхронно отправляем данные:
Добавлено через 11 минут и 38 секунд На клиенте так происходит коннект:
Отправляет сообщение:
|
||||||||||||
|
|||||||||||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
ИМХО, когда ты выключаешь клиента, сервер выходит из цикла
и делает себе this.Disconnect(). Дальше из StartReceive выходим, и прекращается поток
А как сокет сервера опять на прослушку подключений станет? Новый клиент пытается подключиться к сокету, а он - в disconnecte.... -------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| Competitor |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Вот так реализовано:
Т.е. новые клиенты могут подключаться когда угодно. Да и главное клиент то подключается, только данные не передаются. Да, и небольшое уточнение, клиент тоже никогда не выключается (клиент реализован в виде сервиса). Если сервис перезапустить (охх), то все работает как часы. У меня же есть просто консоль, которая работает с вервером через сервис. Ее то и не получается запустить второй раз без перезапуска сервиса или сервера. Подключение к серваку хранит в себе сервис и я подозреваю, что после того как консоль закрывается, сервис не разрывает должным образом соединение. Достаточно ли этого чтобы полностью освободиться ресурсы:
мля... а зачем мне вообще разрывать соединение между сервисом и сервером при перезапуске консоли, ведь они оба должны крутиться постоянно. ладно разобрался. всем спасибо. Без разницы так тоже не работает. Короче поток виснет вот здесь:
RunWorkerAsync не запускает новый поток!!!! Причем делает это хаотично. Первый раз отрабатывает стабильно, а дальше как повезет. Кто0-нить сталкивался с подобным. |
||||||||
|
|||||||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 1 Всего: 48 |
tol05, что и требовалось доказать )
Competitor, ClientManager() откуда вызвается? и сколько раз? Добавлено через 1 минуту и 13 секунд .. вопрос снят ) -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
bwSender.RunWorkerAsync(cmd); запускает поток, но не сразу, а минут через 10. Как это возможно?
|
|||
|
||||
| Competitor |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 23.3.2005 Где: Tula Репутация: нет Всего: -1 |
Перешел на старый добрый Thread, проблем больше не возникает (*постучал по голове)
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |