COM+Sockets ?
От: Y2K  
Дата: 15.11.01 10:41
Оценка:
Столкнулся с проблемой.
Код для работы с сокетами прекрасно работает в exe файле, но вызывает сбой при использовании его в COM — объекте (вызывается из VB). (COM на ATL). Причем сбой НЕ происходит при использовании в качестве ОС Windows XP.
Код примитивный — все лишнее убрал.

По таймеру в цикле идет опрос портов.

СAsyncSocket * pAS;
pAS = new CAsyncSocket;

if (!pAS->Create())
{
//
}
else
pAS->Connect((LPTSTR)strIP, SEND_PORT);

Никакой специфики, но из ATL/COM не работает :(

Грустно.

Кто-нибудь использовал сокеты из комов? Подскажите, пожалуйста, где могут быть грабли на которые я наступаю.
Re: COM+Sockets ?
От: VVV Россия  
Дата: 15.11.01 12:27
Оценка:
Здравствуйте Y2K, Вы писали:

Y2K>Столкнулся с проблемой.

Y2K>Код для работы с сокетами прекрасно работает в exe файле, но вызывает сбой при использовании его в COM — объекте (вызывается из VB). (COM на ATL). Причем сбой НЕ происходит при использовании в качестве ОС Windows XP.
Y2K>Код примитивный — все лишнее убрал.

Y2K>По таймеру в цикле идет опрос портов.


Y2K>СAsyncSocket * pAS;

Y2K>pAS = new CAsyncSocket;

Y2K>if (!pAS->Create())

Y2K>{
Y2K> //
Y2K>}
Y2K>else
Y2K> pAS->Connect((LPTSTR)strIP, SEND_PORT);

Y2K>Никакой специфики, но из ATL/COM не работает :(


Y2K>Грустно.


Y2K>Кто-нибудь использовал сокеты из комов? Подскажите, пожалуйста, где могут быть грабли на которые я наступаю.


а вызывается ли перед этим WSAStartup или AfxSocketInit ?
Re[2]: COM+Sockets ?
От: Y2K  
Дата: 15.11.01 12:50
Оценка:
Здравствуйте VVV, Вы писали:

VVV>а вызывается ли перед этим WSAStartup или AfxSocketInit ?


Вызываю AfxSocketInit в InitInstance приложения.

Возникающая ошибка не ловится посредством try...catch
Re[3]: COM+Sockets ?
От: retalik www.airbandits.com/
Дата: 15.11.01 13:10
Оценка:
Здравствуйте Y2K, Вы писали:

Y2K>Здравствуйте VVV, Вы писали:


VVV>>а вызывается ли перед этим WSAStartup или AfxSocketInit ?

Y2K>Вызываю AfxSocketInit в InitInstance приложения.
Приложения или ATL-компонента?
Успехов,
Виталий.
Re[4]: COM+Sockets ?
От: Y2K  
Дата: 15.11.01 13:28
Оценка:
Здравствуйте retalik, Вы писали:

R>Приложения или ATL-компонента?


Приложения. В смысле класса CApp. Не кокласса.
Re: COM+Sockets ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.11.01 20:28
Оценка:
Здравствуйте Y2K, Вы писали:

Y2K>Кто-нибудь использовал сокеты из комов? Подскажите, пожалуйста, где могут быть грабли на которые я наступаю.


А какая потоковая модель у COM-объекта?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: COM+Sockets ?
От: Y2K  
Дата: 16.11.01 06:50
Оценка:
Здравствуйте VladD2, Вы писали:

VD>А какая потоковая модель у COM-объекта?


Потоковая модель Apartment.

я тут продолжил эксперименты. Как я говорил тот код, который я приводил в вопросе, выполняется по таймеру. Таймер был внутри ком-объекта. Вылетание происходило случайным образом, но не позже пятого срабатывания таймера (таймер срабатывает раз в 5 с).
теперь я изменил схему. Таймер вынес в клиентское приложение. При таком подходе вылетание происходит, но гораздо реже. После 2 или 3 минут работы. Самый косяк, что при попытке отладить этот кусок кода под W2K, отладчик предлагает покопаться в ассемблерном коде. Под Win XP отладчик работает нормально, но там и ошибка не происходит.
Вокруг одни косяки :(
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.