Aracılığıyla paylaş


WinINet temelleri

WinINet, karşıdan yükleme ve karşıya yükleme dosyaları uygulamanız içinde ftp desteği eklemek için kullanabilirsiniz.Geçersiz kılmak OnStatusCallback ve dwContext aramak ve dosya karşıdan yükleme gibi kullanıcılara ilerleme bilgilerini sağlamak için parametre.

Bu makale aşağıdaki konuları içerir:

  • Çok basit bir tarayıcı oluşturmak

  • Bir Web sayfasını karşıdan yükleme

  • ftp dosya

  • Gopher Dizin Al

  • Dosya aktarma sırasında ilerleme durumu bilgilerini görüntüleme

Aşağıdaki kod excerpts basit bir tarayıcı oluşturmak, bir Web sayfası, ftp, dosya yükleme ve gopher ismi göstermektedir.Tam örnek olarak değildir ve tüm özel durumunun işlenmesini içerir.

WinINet hakkında ek bilgi için bkz: Win32 Internet Uzantıları (WinInet).

Çok basit bir tarayıcı oluşturmak

#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();
}

Bir Web sayfasını karşıdan yükleme

//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 dosya

#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 Dizin Al

#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 kullanma

WinINet sınıfları kullanılırken kullanın OnStatusCallback uygulamanızın üyesi CInternetSession nesne durum bilgisini almak için.Kendi türetmek, CInternetSession nesne, geçersiz kılma OnStatusCallbackve durumu geri aramalar, mfc çağrısı, OnStatusCallback işlevi, Internet oturumu etkinliği hakkında ilerleme bilgilerle.

Tek bir oturumla (, kendi yaşam birçok farklı farklı işlemler gerçekleştirebilir) birkaç bağlantıları desteklemiyor olabilir çünkü OnStatusCallback her bir durum değişikliği bir özel bağlantı veya işlem tanımlamak için bir mekanizma gerekir.Bu mekanizma, WinInet destek sınıflarında üye işlevlerin çoğunu verilen içerik kimliği parametresi tarafından sağlanır.Bu parametreyi her zaman türüdür DWORD ve her zaman adlı dwContext.

Belirli bir Internet nesnesine atanmış içerik yalnızca nesne neden olur etkinliği tanımlamak için kullanılan OnStatusCallback üyesi CInternetSession nesnesi.Arama OnStatusCallback ; birkaç parametre alır Bu parametreler, uygulamanızın hangi ilerleme yapıldı, hangi hareket ve bağlantı için söylemek için birlikte çalışır.

Oluşturduğunuzda, bir CInternetSession nesnesi, belirtebileceğiniz bir dwContext parametre.CInternetSessionkendisini bağlam Kimliğinin kullanmaz; Bunun yerine, bağlam kimliği herhangi bir şekilde geçirir InternetConnection-açıkça bir bağlam Kimliğini kendi düzenlediğim nesneleri türetilmiş.De açın, bu CInternetConnection nesneleri birlikte bağlam kimliği geçmesi CInternetFile açıkça farklı içerik kimliği belirtmezseniz, oluşturdukları nesneleriDiğer taraftan, kendi özel bağlam kimliği, nesne ve herhangi bir iş yapar, bağlam kimliği ile ilişkilendirilecek belirtirsenizHangi durum bilgisi, içinde verilir tanımlamak için içerik kimlikleri kullanın, OnStatusCallback işlevi.

Dosya aktarma sırasında ilerleme durumu bilgilerini görüntüleme

Örneğin, bir dosyayı okumak için bir ftp sunucusuna bir bağlantı oluşturur ve de Web sayfasını bir http sunucusuna bağlandığında bir uygulama yazıyorsanız, vardır bir CInternetSession nesnesi, iki CInternetConnection nesneleri (biri olacak bir CFtpSession ve diğer bir CHttpSession) ve iki CInternetFile nesneleri (her bağlantı için bir adet).Varsayılan değerler için kullanılan dwContext parametreleri, değil olurdu ayırt edebilirsiniz OnStatusCallback ftp bağlantısı ve http bağlantısı için ilerleme gösteren çağırmaları için ilerleme gösteren çağırmaları.Belirttiğiniz bir dwContext sonrası için de test edebilirsiniz kimliği OnStatusCallback, geri arama işlemi üretilen bilirsiniz.

Ayrıca bkz.

Kavramlar

mfc Internet programlama temelleri

Win32 Internet Uzantıları (WinInet)