久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 网络编程 > VC/C++ 学堂讨论 | 推荐文章

VC网络程序设计二则


2004-05-27  
 
  一、使用MFC编写FTP程序

  1、生成CInternetSession变量。
    CInternetSession ses;
  2、打开FTP连接。
    CFtpConnection*     pFTP=ses.GetFtpConnection("ftp.microsoft.com","user","password",port,FALSE);
  3、打开文件。
  CInternetFile* pF=pFTP->OpenFile("abc.exe");

  更简单的是使用
  CFtpConnect::GetFile(...) ; CFtpConnection::PutFile(...) ;可以拷贝文件。
  4、读取文件,由于CInternetFile是CStdFile的派生类,因此可以使用CFile,CStdFile的所有函数。
    pF->Read(...)

  高级用法:
  1、查找文件,列文件目录。(FTP Tree Sample in VC5)
    CFTPFileFind类可以帮助你列出当前目录下的所有文件。用法和CFileFind相同。
  2、断点续传。

  当打开文件后,可以使用CInternetFile::Seek(...)重定位指针。但如果该服务器不支持断点续传会产生异常,应该有相应的捕捉代码。

  其它:
  同样的CHttpConnection的用法也很类似。

二 、在使用Internet后挂断线路
  WinInet API提供的功能很强大,但是当关闭掉Internet事务却不能关闭掉dial up连接。在WinInet API中没有提供相应的函数完成该功能。那么如何才能在关闭掉Internet事务的同时关闭掉dial up连接呢?
  解决方法:

  RAS API可以通过调用RasHangUp(...)关闭连接,但是需要RAS句柄。有两种方法可以得当RAS句柄:
  1、自己建立RAS连接是保存该句柄,但这样做对与解决当前提出的问题是没必要的,
  2、通过RasEnumConnections(...)列举所有句柄。

  所需环境:
  RASAPI32.DLL,该连接库在安装播号网络时会自动安装。
  RAS.H
  RASAPI32.LIB

示范代码:

// Quit a dial up connection - rasapi32.lib und #include "ras.h" needed
bool DisconnectRas()
{
bool bOk = false;
RASCONN ras[20];
DWORD dSize,dNumber,dCount;

ras[0].dwSize = sizeof(RASCONN);
dSize = sizeof( ras );

// Get active RAS - Connection
if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
{
bOk = true;

for( dCount = 0; dCount < dNumber; dCount++ )
{
// Hang up that connection
if( RasHangUp(ras[dCount].hrasconn) != 0 )
{
bOk = false;
break;
}
}
}
return bOk;
}


 
发表评论 推荐文章 关闭窗口
 相关内容
- 如何得到网卡编号(MAC地址)? 2004-05-27
- 如何列出所有网上邻居? 2004-05-27
- 获得本机主机名和IP地址 2004-05-27
- Socket中如何设置连接超时 2004-05-27
- IP包过滤 2004-05-27
 
 学堂分类
网络知识操作系统
网络应用网络服务
网页开发网络编程
数据存储网络设备
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net