Я использую библиотеки poco для доступа к ftp-серверу на yocto linux (hw - микроконтроллер). Если я укажу действительный адрес (хост ftp), все будет работать правильно, если я использую несуществующий адрес ftp, метод "open" зависнет на 129 секунд! После этого он выдает следующий Poco :: Exception ..
displayText->"N4Poco9ExceptionE"
what->"Exception"
message->""
name->"Exception"
code->"110"
здесь код ..
Poco::Net::FTPClientSession ftp;
try
{
ftp.open(host,port); <<<<<<<<< hangs here
ftp.login(userName,password);
ftp.logout();
ftp.close();
}
catch(Poco::Exception exc)
{
}
Методы setTimeout () работают только после вызова метода open () (в противном случае это вызывает исключение). Однако, если я установил внутреннюю переменную _timeout с помощью хака указателя c ++, не повезло ... похоже, не связано с таймаутом ftp.
Если я сломаю отладчик, это будет стек ..
1 __libc_connect connect.c 26 0xffffbe68bb8c
2 ?? 0xffffbf1b1ab0
3 ??
(подключение. c)
#include <sys/socket.h>
#include <sysdep-cancel.h>
#include <socketcall.h>
int __libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
{
#ifdef __ASSUME_CONNECT_SYSCALL
return SYSCALL_CANCEL (connect, fd, addr.__sockaddr__, len); <<< THE DEBUGGER BREAKS HERE
#else
return SOCKETCALL_CANCEL (connect, fd, addr.__sockaddr__, len);
#endif
}
Заранее благодарим за вашу помощь. С уважением,
Alex