Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Win сокет по чемуто зави сает в соотоянии connecting...  (Прочитано 14313 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 08-01-2004 09:03 » 

Ситуация .
Есть "клубная" прогармма (не моя) административная часть и клиентские на машинах.
Написано на VB 6.0
Нужно немного модифицировать интерфейс.
Беру исходники перекомпелирую клиента все работает без проблем,
беру админа перекомпелитую ...
отваливается командное соединение.

Причина
компонент MS Wincoсk после попытки открытия
frmClient.tcpClient.Connectустойчиво зависает в
сотоянии 6 - connecting.

Делаю пустой проект и пробую подсоеденится к оттуда к клиенту также картина устойчивое состояние  frmClient.tcpClient.State=6

Как с этим бороться?
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 08-01-2004 10:14 » 

Мало инфы - ну зависание происходит по 100 причинам - не получен ответ не работает инет, не правильно выставлены параметры и т.д. и т.п.

Попробуй сконнектится на скажем 80 порт shelek.com и посмотри - если опять траблы - проверь коннекцию с компа вообще - и там ОК - проверяй установки компоненты.
Можешь бросить сюда, если не понятно будет.
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 08-01-2004 11:51 » 

Забыл сказать сеть локальная...
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 08-01-2004 12:45 » 

Попробуй сперва на самого себя - 127.0.0.1 - сам точно не куда не денешься...
Полезно еще мониторить трафик при этом.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 08-01-2004 13:35 » 

Поправте меня если я ошибаюсь
Берем один объект  ВинСоск
Clt.LocalPort=1005
Clt.Bind

Берем второй объект ВинСоск
svr.RemoutIP="127.0.0.1"  
svr.RemoutPort=1005
svr.connect

В результате должно законектися?
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 08-01-2004 13:47 » 

На серверной части разве достаточно одного bind? Может там еще и прочая классика есть - listen, accept ? Я то этого контрола в глаза не видел, но сдается мне что должны быть.
Как там, кстати, с кодом (а лучше с текстом) ошибки - полезно получить и распечатать - лучшая диагностика.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 08-01-2004 13:51 » 

RXL, обязательно.

Именно select - accept.

PSD, аяяй - самый завсегдатай - смотри в нашем разделе статьи по сокетам - там правда не вин сокеты - но и они работают по тому же алгоритму.

select - в случае многократного соединения и сервер должен принять на 1 порт, accept однократный прием сокета на коннекте.
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 09-01-2004 05:48 » 

Цитата

Как там, кстати, с кодом (а лучше с текстом) ошибки - полезно получить и распечатать - лучшая диагностика.

Код рабочий.
(Потому как программа собраная с этого исходника работает и в полне успешно)
Проблема возникла при попытке скомпелировать VB проект на другой машине
а именно под Windows XP SP1, там были попутно еще ошибки
(Выдавалась ошибка типа (код 13)
на строку
dim d as date
d=now+"01:00:00"
но при этом против
d="01:00:00"
d=now+d
никто не возражал.
)

Поэтому я думаю что грабли не вкоде а системе,  на работе у меня все великолепно компелится и работает  под 2000/ 98 , причем собраный проект на 2000 без вопросов работает на XP в клубе.
Но мне нужно чтоб сей поект собирался в клубе на XP (Нет у меня возможности им в рабочее время заниматься)


Ошибки не выдаются , как я уже сказал сокет выходит не состояние 9 а  зависает в состоянии 6.
На приемной(она как я понимаю сервером называется(та сторона к которой пытаемся писоеденится) ) стороне как и положено аксепт и прочие .


Ктонибудь сталкивался с такими глюками при переходе на ХР?
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 09-01-2004 09:02 » 

Цитата
dim d as date
d=now+"01:00:00"
но при этом против
d="01:00:00"
d=now+d
никто не возражал.
Тут ничего загадочного. В первом случае ты пытаешься суммировать два разных типа (date и string) и, видимо, такая операция не описана в классе date. Во втором случае ты присваиваешь строку переменной типа date - вот такая операция реализованна.

Дождись положенного таймаута (не вечно же он так будет висеть) и посмотри какую ошибку вернет connect.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 09-01-2004 11:56 » 

Цитата

Дождись положенного таймаута (не вечно же он так будет висеть) и посмотри какую ошибку вернет connect.

А положеного это сколько? В процесе отладки он у меня минуты две весел...
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 09-01-2004 12:23 » 

Это зависит от ОС. Примерно 1-2 минуты. Быстрее всего, ошибка будет "connection timeout".

Приведи код сервера - настройку сокета и до accept.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 14-01-2004 06:30 » new

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

В результате имееем перманентный  connecting....
Записан

Да да нет нет все остальное от лукавого.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines