Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

bind error   Найти похожие ветки 

 
Wiz@rd   (2005-10-12 11:53) [0]

При вызове функции bind в из заинекченной dll"ки происходит фатальная ошибка, хотя тот же самый код в обычной программе работает без сбоев. Пробовал WinSock и WinSock2


 
Digitman ©   (2005-10-12 11:55) [1]


> происходит фатальная ошибка


это какая же ?


> Пробовал WinSock и WinSock2


попробуй еще WinSock3..WinSock354634343543 ... как только появятся) ..
или таки сподобься уже ДЕТАЛЬНО описать проблему.


 
Wiz@rd   (2005-10-12 11:59) [2]

function FindBindPort: Word;
var
 i: Word;
 srv_address: PSockAddr;
 sock: TSocket;
begin
 Result := 0;
 sock := socket(AF_INET, SOCK_STREAM, 0);
 if sock = INVALID_SOCKET then
   Exit;
 GetMem (srv_address, SizeOf (srv_address^));
 ZeroMemory (srv_address, SizeOf (srv_address^));
 srv_address.sin_family := AF_INET;
 srv_address.sin_addr.s_addr := INADDR_ANY;
 for i := gPortRange.First to gPortRange.Last do
 begin
   srv_address.sin_port := htons(i);
   if bind(sock, srv_address, SizeOf(srv_address)) <> SOCKET_ERROR then {вот тут при использовании в dll процесс приходит к аварийному завершению}
   begin
     closesocket(sock);
     Result := i;
     Exit;
   end;
 end;
end;

ЗЫ. Просьба отвечать по делу


 
Digitman ©   (2005-10-12 12:33) [3]


> Просьба отвечать по делу


ну прямо таки прокурор)

ты справку читал ?

For TCP/IP, if the port is specified as zero, the service provider will assign a unique port to the application with a value between 1024 and 5000

и к чему эти выкрутасы с циклом ?

система и без них найдет своб.порт в упомянутом диапазоне.

вероятность того, что в этом диапазоне не найдется нит одного своб.порта, весьма и весьма мала.


> вот тут при использовании в dll процесс приходит к аварийному
> завершению


с каким же сообщением ?

хочешь сказать, что "крах процесса" происходит при первой же попытке вызова bind() и до возврата из этой ф-ции даже и дело не доходит ?


 
Wiz@rd   (2005-10-12 12:42) [4]

Дело в специфики приложения: если это юзать в обычной проге то всё ok, другое дело в dll которую заинектил


 
Digitman ©   (2005-10-12 12:44) [5]


> Wiz@rd   (12.10.05 12:42) [4]


я тебе задал вопросы, от ответа на которые немало зависит и решение.

так что "просьба отвечать по делу", а не лить воду про какие-то ДЛЛ ..

API-ф-ция - она и в Африке API-ф-ция.


 
Владислав ©   (2005-10-12 12:53) [6]


> bind(sock, srv_address, SizeOf(srv_address))


Интересно, чему равен SizeOf(srv_address)?..


 
Wiz@rd   (2005-10-12 12:55) [7]

SizeOf (srv_address^));
с этим проблем нет, дело именно в bind


 
Digitman ©   (2005-10-12 13:01) [8]


> дело именно в bind


вот и рассказывай давай, что там за "дело" - выполняется ф-ция до конца или крах процесса происходит именно вов ремя выполнения ф-ции при таком-то по порядку ее вызове.


 
Wiz@rd   (2005-10-12 13:44) [9]

Я немогу протестить что там и почему т.к. исполняется это в dll, которая в чужом процессе, exception просто говорит адрес ошибки и всё


 
Digitman ©   (2005-10-12 13:59) [10]


> немогу протестить что там и почему т.к. исполняется это
> в dll, которая в чужом процессе


не ври.

никого тут не интересует, "чужой" или "свой" процесс, речь идет о работоспособности твоего кода в ЛЮБЫХ предполагаемых тобой условиях.

сделай тестовое приложение (свое), вызови там свою ф-цию из своей же ДЛЛ и трассируй/тестируй/отлаживай ее вдоль и поперек !


 
atruhin ©   (2005-10-12 17:19) [11]

Да господи! Ведь ошибку уже показали!
>> bind(sock, srv_address, SizeOf(srv_address))
>> Интересно, чему равен SizeOf(srv_address)?..
bind(sock, srv_address, SizeOf(srv_address))


 
Digitman ©   (2005-10-12 17:56) [12]


> atruhin ©   (12.10.05 17:19) [11]


нет, тут самое интересное другое - сей "фрукт" утверждает. что эта (одна и та же !) лажа с разыменованием якобы работает в ехе-проекте, но якобы не работает в dll-проекте)

и при том , понимаете ли, "по делу" изволит требовать) ..



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
2-1136390857
St74
2006-01-04 19:07
2006.01.22
Как перехватить ошибку в приложении?


5-1120820695
mmms
2005-07-08 15:04
2006.01.22
Подскажите, как создать TPopupMenu у любого виз. компанента


2-1136467704
Seraphim
2006-01-05 16:28
2006.01.22
Взаимодействие Программ


1-1134480593
Reset
2005-12-13 16:29
2006.01.22
Поиск компонента и выяснение его свойств...


2-1135923640
Silver__Dragon
2005-12-30 09:20
2006.01.22
использование звуковых файлов