WinInet 기본 사항

다운로드 하 고 응용 프로그램 내에서 파일을 업로드 하는 FTP 지원을 추가 하려면 Wininet을 사용할 수 있습니다.재정의 하 여 OnStatusCallback 및 사용의 dwContext 매개 변수를 검색 하 고 파일을 다운로드할 때 사용자에 게 진행률 정보를 제공 합니다.

이 문서에서는 다음 항목을 다룹니다.

  • 간단한 브라우저 만들기

  • 웹 페이지를 다운로드 합니다.

  • FTP 파일

  • Gopher 디렉터리 검색

  • 파일 전송 도중 진행 정보를 표시 합니다.

아래는 코드 발췌는 간단한 브라우저를 만들고, 다운로드 웹 페이지, 파일, FTP 및 gopher 파일을 검색 하는 방법을 보여 줍니다.완전 한 예제가 아니며 예외 처리가 모두를 포함 하며

Wininet에 대 한 자세한 내용은 Win32 인터넷 확장 (WinInet).

간단한 브라우저 만들기

#include <afxinet.h>

void DisplayPage(LPCTSTR pszURL)
{
   CInternetSession session(_T("My Session"));
   CStdioFile* pFile = NULL;
   CHAR szBuff[1024];
   //use a URL and print a Web page to the console
   pFile = session.OpenURL(pszURL);
   while (pFile->Read(szBuff, 1024) > 0)
   {
      printf_s("%1023s", szBuff);
   }
   delete pFile;
   session.Close();
}

웹 페이지를 다운로드 합니다.

//this code excerpt also demonstrates try/catch exception handling
#include <afxinet.h>

void DisplayHttpPage(LPCTSTR pszServerName, LPCTSTR pszFileName)
{
   CInternetSession session(_T("My Session"));
   CHttpConnection* pServer = NULL;
   CHttpFile* pFile = NULL;
   try
   {
      CString strServerName;
      INTERNET_PORT nPort = 80;
      DWORD dwRet = 0;

      pServer = session.GetHttpConnection(pszServerName, nPort);
      pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, pszFileName);
      pFile->SendRequest();
      pFile->QueryInfoStatusCode(dwRet);

      if (dwRet == HTTP_STATUS_OK)
      {
         CHAR szBuff[1024];
         while (pFile->Read(szBuff, 1024) > 0)
         {
            printf_s("%1023s", szBuff);
         }
      }
      delete pFile;
      delete pServer;
   }
   catch (CInternetException* pEx)
   {
       //catch errors from WinInet
      TCHAR pszError[64];
      pEx->GetErrorMessage(pszError, 64);
      _tprintf_s(_T("%63s"), pszError);
   }
   session.Close();
}

FTP 파일

#include <afxinet.h>

void GetFtpFile(LPCTSTR pszServerName, LPCTSTR pszRemoteFile, LPCTSTR pszLocalFile)
{
   CInternetSession session(_T("My FTP Session"));
   CFtpConnection* pConn = NULL;

   pConn = session.GetFtpConnection(pszServerName);
   //get the file
   if (!pConn->GetFile(pszRemoteFile, pszLocalFile))
   {
      //display an error
   }
   delete pConn;
   session.Close();
}

Gopher 디렉터리 검색

#include <afxinet.h>

void RetrieveGopherFile(LPCTSTR pszGopherSite, LPCTSTR pszFile)
{
   CInternetSession session(_T("My Gopher Session"));
   CGopherConnection* pConn = NULL;
   CGopherFileFind* pFile;

   pConn = session.GetGopherConnection(pszGopherSite);
   pFile = new CGopherFileFind(pConn);
   BOOL bFound = pFile->FindFile(pszFile);
   while (bFound)
   {
      //retrieve attributes of found file
      bFound = pFile->FindNextFile();
   }
   delete pFile;
   delete pConn;
   session.Close();
}

Onstatuscallback를 사용 합니다.

WinInet 클래스를 사용 하는 경우 사용할 수 있습니다에서 OnStatusCallback 멤버를 응용 프로그램의 CInternetSession 개체 상태 정보를 검색 합니다.직접 파생 하는 경우 CInternetSession 개체, 재정의 OnStatusCallback, 상태 콜백이 활성화 하 고 MFC 호출을 OnStatusCallback 함수로 해당 인터넷 세션의 모든 활동에 대 한 진행 상황 정보를.

단일 세션 (, 자신의 수명을 통해 다양 한 고유한 작업 수행할 수 있음) 여러 연결을 지원 하지 않으므로 OnStatusCallback 각 상태의 변화는 특정 연결 또는 트랜잭션 식별 하는 메커니즘이 필요 합니다.해당 메커니즘 많은 WinInet 지원 클래스의 멤버 함수에 지정한 컨텍스트 ID 매개 변수에 의해 제공 됩니다.이 매개 변수는 항상 형식입니다 DWORD 및 항상 인 dwContext.

만 활동 하면 개체를 식별 하는 특정 인터넷 개체에 할당 된 컨텍스트가 사용 됩니다의 OnStatusCallback 의 멤버는 CInternetSession 개체.호출을 OnStatusCallback 받는 여러 매개 변수가 있습니다. 이러한 매개 변수는 응용 프로그램을 알리려면 어떤 트랜잭션 및 연결에 대 한 어떤 진행 했습니다 함께 작동 합니다.

만들 때는 CInternetSession 개체를 지정할 수 있는 dwContext 생성자 매개 변수.CInternetSession자체 컨텍스트 ID를 사용 하지 않습니다. 대신에 모든 컨텍스트 ID 전달 InternetConnection-자체의 컨텍스트 ID를 명시적으로 표시 되지 않는 개체를 파생 합니다.에 사용 된 CInternetConnection 개체 함께 컨텍스트 ID를 전달 합니다 CInternetFile 개체를 만드는 다른 컨텍스트 ID가을 명시적으로 지정 하지 않은 경우한편, 자신만의 특정 컨텍스트 ID, 개체 및 만약 저작물 해당 컨텍스트 ID와 연결 될 지정 하지 않으면컨텍스트 Id를 사용 하 여 식별에서 상태 정보를 지정 하 여 OnStatusCallback 함수.

파일 전송 도중 진행 정보를 표시 합니다.

예를 들어, FTP 서버와 파일을 읽으려면 연결을 만들고 또한 웹 페이지에 HTTP 서버에 연결 하는 응용 프로그램을 작성 하는 경우 사용 해야는 CInternetSession 개체를 두 CInternetConnection 개체 (하나일 것는 CFtpSession 와 다른 것은 CHttpSession), 및 두 CInternetFile 개체 (1 각 연결에 대 한).기본값을 사용 하는 경우는 dwContext 매개 변수를 사용자 수를 구별할 수는 OnStatusCallback FTP 연결 및 HTTP 연결에 대 한 진행률을 나타내는 호출 진행률 호출 합니다.지정 하는 경우는 dwContext ID를 나중에 테스트할 수 있습니다 OnStatusCallback, 콜백 작업을 생성 해야 합니다.

참고 항목

개념

MFC 인터넷 프로그래밍 기본 사항

Win32 인터넷 확장 (WinInet)