HINTERNET hSession = InternetOpen("abc", INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, 0);HINTERNET hFtp = InternetConnect(hSession, "aa", 21, "user", "password", 
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);HINTERNET hRes;
BOOL bOK = FtpCommand(hFtp, FALSE, FTP_TRANSFER_TYPE_ASCII, 
"REST 1", 0, &hRes);HINTERNET hFile =  FtpOpenFile(hFtp, "sn.txt", GENERIC_READ,  FTP_TRANSFER_TYPE_BINARY, 0);
DWORD dwRead;
char pBuf[1024];
InternetReadFile(hFile, pBuf, 10, &dwRead);sn.txt的长度为86字节。
不管发送怎样的REST命令,在InternetReadFile时总是从sn.txt的第一个字节开始读的,请问如何解决此问题?谢谢!

解决方案 »

  1.   

    命令有问题 命令后面要加\r\n
    你那个要写成"REST 1\r\n"
      

  2.   

    这个我已经考虑过了,还是不行。
    请问你有没有用FtpCommand试过发REST命令?有实际经验可能会对这个问题有帮助。
      

  3.   

    好像不行只能基于 socket 来写
      

  4.   

    REST命令后要接"RETR " + 文件名(就是要服务器重定位指针的那个文件)
    具体请参考RFC 959
    实现过程可参考cuteftp下载时的log
      

  5.   

    CInternetSession* pSession;
    pSession=new CInternetSession();
    CFtpConnection* pConn=NULL;

    pConn=pSession->GetFtpConnection("192.168.100.28","ftpuser","ftpuser");

    CString a,b;
    a = "E:\temp\begin.mpg";
    b = "begin.mpg";
    a.Replace("\\","\\\\");
    pConn->PutFile(a,b); pConn->Close();
    delete pConn;
    pSession->Close();
    delete pSession;