Форум: "Сети";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c