我正在使用poco库访问yocto Linux上的ftp服务器(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(( 方法后才有效(否则会引发异常(。但是,如果我使用 c++ 指针黑客设置内部 _timeout 变量,那就没有运气了。似乎与 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
}
提前感谢您的帮助。 此致敬意
亚历克斯
如果没有人知道如何使用 poco FTPClientSession 对象来解决,我可以尝试通过此调用 (QT lib( 在 FTPClientSession::open(( 之前。
QTcpSocket socket;
socket.connectToHost("xxx.xxx.xxx.198",21);
bool bConnected = socket.waitForConnected(10*1000); //ms