自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們來對獲取網(wǎng)絡(luò)協(xié)議的內(nèi)容進行一下具體的講解。那么每個步驟以及相關(guān)的代碼我們都做了明確的介紹,希望對大家有所幫助。

對于已經(jīng)安裝過的網(wǎng)絡(luò)協(xié)議來說,我們可通過C++的使用來進行獲取網(wǎng)絡(luò)協(xié)議的工作。那么具體的操作步驟,以及相關(guān)的代碼我們在下文中進行了介紹和講解,步驟比較細致,那么本文的總結(jié),望對大家有所幫助。

一、創(chuàng)建對話框應(yīng)用程序

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼

二、編輯對話框資源

控件ID及標題

  1. IDC_LIST_PROTOCOLS           
  2. IDC_GETNETPROTOCOLS     獲取網(wǎng)絡(luò)協(xié)議    
  3. IDOK                    確認  
  4. IDCANCEL                取消 

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼#p#

三、添加變量、函數(shù)

1、添加變量

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼

2、添加函數(shù)

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼#p#

四、添加代碼

五、添加對象/庫模塊

1、 于“GetNetProtocolsDlg.cpp”文件內(nèi)添加包含語句

  1. #include "stdafx.h"  
  2. #include "GetNetProtocols.h"  
  3. #include "GetNetProtocolsDlg.h"  
  4. #include <winsock2.h> 

2、添加獲取網(wǎng)絡(luò)協(xié)議的函數(shù)代碼

  1. void CGetNetProtocolsDlg::OnGetnetprotocols()   
  2. {  
  3. // TODO: Add your control notification handler code here  
  4. WSADATA WSAData;  
  5.     int i, nRet;  
  6.     DWORD dwErr;  
  7.     WSAPROTOCOL_INFO *lpProtocolBuf = NULL;  
  8.     DWORD dwBufLen = 0;  
  9.  
  10. CString strTemp;  
  11.  
  12.     if (WSAStartup(MAKEWORD(2,2), &WSAData))  
  13. {  
  14.         strTemp.Format("WSAStartup %d", WSAGetLastError());  
  15.    m_ListProtocols.AddString(strTemp);  
  16. }  
  17.     else//第一層  
  18.     {  
  19.    //方法:WSAEnumProtocols獲得計算機安裝的協(xié)議  
  20.         // First, have WSAEnumProtocols tell you how big a buffer you need.  
  21.         nRet = WSAEnumProtocols(NULL, lpProtocolBuf, &dwBufLen);  
  22.         if (SOCKET_ERROR != nRet)  
  23.    {  
  24.     strTemp.Format("WSAEnumProtocols: should not have succeeded\r\n");  
  25.     m_ListProtocols.AddString(strTemp);  
  26.    }  
  27.         else if (WSAENOBUFS != (dwErr = WSAGetLastError()))  
  28.    {  
  29.             // WSAEnumProtocols failed for some reason not relating to buffer size - also odd.  
  30.             strTemp.Format("WSAEnumProtocols(1): %d\r\n", WSAGetLastError());  
  31.     m_ListProtocols.AddString(strTemp);  
  32.    }  
  33.         else//第二層  
  34.    {  
  35.             // WSAEnumProtocols failed for the "expected" reason.  
  36.             // Now you need to allocate a buffer that is the right size.  
  37.             lpProtocolBuf = (WSAPROTOCOL_INFO *)malloc(dwBufLen);  
  38.             if (lpProtocolBuf)  
  39.     {  
  40.                 // Now you can call WSAEnumProtocols again with the  
  41.                 // expectation that it will succeed  
  42.                 // because you have allocated a big enough buffer.  
  43.                 nRet = WSAEnumProtocols(NULL, lpProtocolBuf, &dwBufLen);  
  44.                 if (SOCKET_ERROR == nRet)  
  45.      {                      
  46.       strTemp.Format("WSAEnumProtocols(3): %d\r\n", WSAGetLastError());  
  47.       m_ListProtocols.AddString(strTemp);  
  48.      }  
  49.                 else 
  50.                 {  
  51.       // Enumerate the protocols.  
  52.       strTemp.Format("該計算機安裝的網(wǎng)絡(luò)協(xié)議有:");  
  53.       m_ListProtocols.AddString(strTemp);  
  54.       for (i=0; i<nRet; i++)  
  55.       {  
  56.        strTemp.Format(" 協(xié)議%d:<%s>\r",i+1, lpProtocolBuf[i].szProtocol);  
  57.        m_ListProtocols.AddString(strTemp);  
  58.       }  
  59.                 }  
  60.                 free(lpProtocolBuf);  
  61.     }//if (lpProtocolBuf)結(jié)束  
  62.    }//第二層else結(jié)束  
  63.     }//第一層else結(jié)束  
  64. //調(diào)用WSACleanup函數(shù)進行WinSock的清理工作,以便釋放其占用的資源  
  65.     WSACleanup();   

點“工程”,點“設(shè)置”,點選“連接”,添加“Ws2_32.lib ”模塊。

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼

六、編譯

七、運行

獲取網(wǎng)絡(luò)協(xié)議的步驟和代碼#p#

八、函數(shù)說明:

1、WSAStartup函數(shù)聲明

int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)

wVersionRequested:為將要使用之Windows Stockets API版本,是一高位為次版本號,低位為主版本號的WORD類型整數(shù)。

lpWSAData:指向WSADATA資料之指針。

功能:完成windows Sockets之一系列初始化,乃使用windows Sockets之應(yīng)用程序都必須調(diào)用的函數(shù)。該函數(shù)調(diào)用成功,返回“0”,可以使用Sockets;失敗則返回錯誤值,使用不了Sockets。

2、WSAEnumProtocols函數(shù)聲明

int WSAEnumProtocols(LPINT lpiProtocols,LPWSAPROTOCOL_INFO lpProtocolBuffer,LPDWORD lpdwBufferLength)

lpiProtocols:一個以NULL結(jié)尾的協(xié)議標識號數(shù)組,為可選參數(shù)。lpdwProtocols為NULL時返回所有可用協(xié)議信息;否則返回數(shù)組所列協(xié)議信息。

lpProtocolBuffer:以結(jié)構(gòu)WSAPROTOCOL_INFO填充之緩沖區(qū)。WSAPROTOCOL_INFO結(jié)構(gòu)用于存取一給定協(xié)議之完整信息。

lpdwBufferLength:輸入時,用于存放傳遞給WSAEnumProtocols()函數(shù)之lpProtocolBuffer緩沖區(qū)長度;輸出時,為所有獲取網(wǎng)絡(luò)協(xié)議的信息需傳遞于WSAEnumProtocols()函數(shù)之緩沖區(qū)長度。

功能:獲取網(wǎng)絡(luò)協(xié)議安裝于本地PC機上的可用網(wǎng)絡(luò)協(xié)議族,成功則返回協(xié)議數(shù)目,失敗則返回錯誤值。

3、WSAPROTOCOL_INFO結(jié)構(gòu)定義

  1. typedef struct_WSAPROTOCOL_INFO{  
  2.     DWORD                                    dwServiceFlags1;  
  3.     DWORD                                    dwServiceFlags2;  
  4.     DWORD                                    dwServiceFlags3;  
  5.     DWORD                                    dwServiceFlags4;  
  6.     DWORD                                    dwServiceFlags;  
  7.     GUID                                          ProviderId;  
  8.     DWORD                                    dwCatalogEntryId;  
  9.     WSAPROTOCOLCHAIN         ProtocolChain;  
  10.     int                                                iVersion;  
  11.     int                                                iAddressFamily;  
  12.     int                                                iMaxSockAddr;  
  13.     int                                                iMinSocAddr;  
  14.     int                                                iSocketType;  
  15.     int                                                iProtocl;  
  16.     int                                                iProtoclMaxOffset;  
  17.     int                                                iNetworkByteOrder;  
  18.     int                                                iSecurityScheme;  
  19.     DWORD                                    dwMessageSi;  
  20.     DWORD                                    dwProviderReserved;  
  21.     TCHAR                                      szProtocol[WSAPROTOCOL_LEN+1];  
  22.    }WSAPROTOCOL_INFO,*LPWSAPROTOCOL_INFO 

dwServiceFlags1:表示不同協(xié)議屬性之一個位字段。

szProtocol:指向網(wǎng)絡(luò)協(xié)議族,由此參數(shù)獲取網(wǎng)絡(luò)協(xié)議。

功能:存放和獲取一給定協(xié)議的完整信息。

責(zé)任編輯:佟健 來源: hi.baidu.com
相關(guān)推薦

2010-08-23 17:13:25

設(shè)置DHCP協(xié)議

2010-08-29 21:21:18

DHCP協(xié)議

2012-02-08 10:31:04

FCoE

2010-07-05 16:30:45

BGP協(xié)議

2010-07-02 14:37:20

配置SSH協(xié)議

2020-07-28 08:38:10

TCPUDP協(xié)議

2010-07-01 14:22:02

配置FTP服務(wù)器

2010-08-30 20:00:00

命令行DHCP

2011-08-24 09:35:54

ICMPIGMPRIP

2010-09-09 16:56:08

七層網(wǎng)絡(luò)協(xié)議

2024-01-07 17:11:53

網(wǎng)絡(luò)IDC機房

2021-02-21 22:21:46

網(wǎng)絡(luò)安全IT安全NSA

2014-06-13 13:47:31

UDP

2009-12-14 17:32:46

路由選擇協(xié)議

2011-08-24 10:31:01

網(wǎng)絡(luò)協(xié)議SLIPPPP

2010-09-09 15:25:35

網(wǎng)絡(luò)協(xié)議

2010-07-05 10:38:49

網(wǎng)絡(luò)層次協(xié)議

2010-06-17 17:51:12

資源預(yù)留協(xié)議

2010-06-17 18:00:40

網(wǎng)絡(luò)通訊協(xié)議

2018-12-24 06:56:12

物聯(lián)網(wǎng)網(wǎng)絡(luò)協(xié)議MiWi
點贊
收藏

51CTO技術(shù)棧公眾號