• VC网络程序设计二则(转)


    一、使用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;
    }
  • 相关阅读:
    获取本机外网ip和内网ip
    服务器发布MVC常见问题解决方案
    Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
    Form验证(转)
    各浏览器各版本User-agent汇总 欢迎补充
    MSSQL中把表中的数据导出成Insert
    发布mvc3的项目时system.web.mvc 版本 为3.0.0.1高于服务器版本3.0.0.0 升级到3.0.0.1
    MySQL Packets larger than max_allowed_packet are not allowed
    SQL查看数据库所用用户表数量和使用的空间
    公用提示对话框
  • 原文地址:https://www.cnblogs.com/buffer/p/1280081.html
Copyright © 2020-2023  润新知