日期:2014-05-16  浏览次数:20781 次

ftp 客户端 ABOR 命令服务器 没响应
正在   写一个ftp客户端程序
在向服务器发送完数据后   向服务器发送ABOR命令   服务器没有响应
char*   cmd= "ABOR   \r\n ";
    memset(buf,0,sizeof(buf));
    sprintf(buf, "%s ",cmd);
    if(write(ctrlSock,buf,strlen(buf)) <0)
    {
    cout < < "abort   error " < <endl;
    return   -104;
    }
//执行到这   程序就等待服务器相应,最后超时   为什么?求教了
ret=GetRetCode();
    cout < < "ret= " < <ret < <endl;


------解决方案--------------------
FTP 客户程序通常要同时读标准输入,控制链接和数个数据链接,所以传统的Unix FTP 客户程序使用 select/poll的方式+有限状态机的模型!

也可以用多线程的方式。

LZ的程序中
GetRetCode如果直接去read,此时如果运行ftpd的主机崩溃或网络中断,read就会一直阻塞!

建议看看open source ftp client 是如何实现的!