linux ftp连接超时(10060),FTP数据连接连接远程服务器时超时,该如何处理

当前位置:我的异常网» VC/MFC » FTP数据连接连接远程服务器时超时,该如何处理

FTP数据连接连接远程服务器时超时,该如何处理

www.myexceptions.net  网友分享于:2015-08-26  浏览:227次

FTP数据连接连接远程服务器时超时

我碰到的问题是这样的:

我用SOCKET来做一个FTP上传/下载.控制连接和数据连接在本机和局域网能都能连接上,但连接到远程FTP服务器时就连不上了.connect的时候阻塞和非阻塞方式我都试过了,出现的错误都是是10060:连接超时.请问这是什么原因引起的?怎么样才能解决?除了防火墙的因素外还有什么其他问题会导致这样?   我第一次提问,我分数不多,请高手帮帮忙,谢了.相关的代码见下:

UINT   CFtp::ListFunc(LPVOID   param)

{

.....

QueueFtpCmd(pListInfo-> m_hCtrlSock, "PASV ");//pasv传输方式

retFlag=GetReply(pListInfo-> m_hCtrlSock, "227 ",revStr);//获取FTP响应

if(!retFlag)

{

return   EXIT_ERROR;

}

CString   strHost   =   GetHost(revStr);//得到远程服务器地址

int   nPort   =   GetPort(revStr);//得到远程服务器数据端口

hDataSock   =   GetConnect(strHost,nPort);//得到数据连接,函数见下面

if(hDataSock   ==   INVALID_SOCKET)

{

//错误:无法建立数据连接

}

QueueFtpCmd(pListInfo-> m_hCtrlSock, "LIST ");

retFlag=GetReply(pListInfo-> m_hCtrlSock, "150 ",revStr);

......

return   EXIT_SUCCESS;

}

//控制连接和数据连接都有这个函数来连远程服务器

SOCKET   CFtp::GetConnect(CString   host   ,int   port)

{

SOCKET   hSocket;

SOCKADDR_IN   saServer;                     //   服务器套接字地址.

//   创建一个绑定到服务器的TCP/IP套接字.

if   ((hSocket   =   socket   (PF_INET,   SOCK_STREAM,   0)==INVALID_SOCKET)

{

TRACE( "Allocating   socket   failed.   Error:   %d\n ",WSAGetLastError   ());

return   INVALID_SOCKET;

}

saServer.sin_family   =   AF_INET;//   使用TCP/IP协议.

saServer.sin_port   =   htons   (port);//   设定套接字端口号.

saServer.sin_addr.S_un.S_addr   =   inet_addr(host);//转换成网络使用的二进制数字

memset(saServer.sin_zero,0,8);

//   就是在这里出现问题:   总出现超时

if   (connect   (hSocket,(PSOCKADDR)   &saServer,   sizeof   (saServer))   ==   SOCKET_ERROR)

{

TRACE( "Connecting   to   the   server   failed.   Error:   %d\n ",WSAGetLastError   ());

if(WSAGetLastError   ()==10060)

{

}

closesocket   (hSocket);

return   INVALID_SOCKET;

}

return   hSocket;

}

//这个函数是我尝试用非阻塞方式来连接的

SOCKET   CFtp::GetConnect(CString   host   ,int   port)

{

SOCKET   hSocket;

SOCKADDR_IN   saServer;                     //   服务器套接字地址.

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值