zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    re模块
    正则表达式
    python-函数基础(*arge **kwargs)
    Python-类基础
    Python内置函数
    有些事情自己知道就好
    jquery和dom之间的转换
    Jquery中attr和prop的区别
    thinkphp一对多HAS_MANY
    thinkphp表单自动验证
  • 原文地址:https://www.cnblogs.com/buffer/p/1280081.html
Copyright © 2011-2022 走看看