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();
下面是我写的一个在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();
相关代码如下,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中
}
具体使用方法请查阅msdn的IDispach。
哪位高手知道怎么创建控件的窗口,我太想知道了,我考虑这问题已经考虑了半年了,还是想不出来。
我构造一个CArchive类arch,然后用arch<<vtRet,只写入两个字节(大概就是一个long)的长度。怎么样才能写完整?
我构造一个CArchive类arch,然后用arch<<vtRet,只写入两个字节(大概就是一个long)的长度。怎么样才能写完整?