msinet.ocx 也就是实现了ftp和http,直接用mfc好了
下面是我写的一个在ftp服务器上写文件的例子以下代码经测试通过,我去掉了服务器名和帐号
有些防火墙不允许外部ftp server流入数据,所以我用了Passive模式,即ftpconn=isession.GetFtpConnection("xxx.xxx.xxx.xxx","","",21,true);里的true
完整代码如下:#include <afxinet.h>
void CFtptestDlg::OnBtnftp() 
{
// TODO: Add your control notification handler code here
CInternetSession isession;
CFtpConnection* ftpconn;
CInternetFile* ifile;
        //建立ftp连接
ftpconn=isession.GetFtpConnection("xxx.xxx.xxx.xxx","","",21,true);
if(!ftpconn)
{
TRACE("GetFtpConnection FAILED!\n");
return;
}
        //在当前目录(根目录)建立一个文件叫 ftptest.txt
ifile=ftpconn->OpenFile("ftptest.txt",GENERIC_WRITE);
if(!ifile)
{
TRACE("OpenFile FAILED!\n");
return;
}
        //写数据
ifile->Write("test",4);
ifile->Close();
isession.Close();

解决方案 »

  1.   

    不用mfc怎么做,关键是怎么给控件创建一个窗口??
      

  2.   

    怎么用 msinet.ocx 的 OpenURL 和 Execute 函数?关键是参数怎么传!
      

  3.   

    首先,在你的dialog设计表单上添加控件msinet.ocx,选中它,按Ctrl+w启用Class Wizard,在member variable标签里给他关联上成员变量m_inet.
    相关代码如下,OnBTNNet是我的一个按钮的OnClick事件#include "inet.h"
    void CNtestDlg::OnBTNNet() 
    {
    // TODO: Add your control notification handler code here
    COleVariant vtUrl,vtType,vtRet;
    //由于在OpenUrl中参数和返回值是VARIANT类型,并且内部必须使用UNICODE
    //所以,为了使用方便,在这用了VARIANT的子类COleVariant vtUrl="http://www.csdn.net/index.htm";   //设置url
    vtType=(LONG)0;                          //指定数据类型,0:icString;  1:icByteArray;
    vtRet=m_inet.OpenURL(vtUrl,vtType);      //打开url,vtRet将返回的index.htm存放到vtRet中
    }
      

  4.   

    如果不用mfc,使用方法通过IDispach::Invoke()可以调用方法。
    具体使用方法请查阅msdn的IDispach。
    哪位高手知道怎么创建控件的窗口,我太想知道了,我考虑这问题已经考虑了半年了,还是想不出来。
      

  5.   

    请问怎么把vtRet保存到文件中呢?
    我构造一个CArchive类arch,然后用arch<<vtRet,只写入两个字节(大概就是一个long)的长度。怎么样才能写完整? 
      

  6.   

    请问怎么把vtRet保存到文件中呢?
    我构造一个CArchive类arch,然后用arch<<vtRet,只写入两个字节(大概就是一个long)的长度。怎么样才能写完整?