欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
本地網(wǎng)絡(luò )編程
 本地網(wǎng)絡(luò )編程 收藏
 
一、獲取計算機的IP地址和名稱(chēng):
利用函數GetComputerName()
The GetComputerName function retrieves the NetBIOS name of the local computer. This name is established at system startup, when the system reads it from the registry.
BOOL GetComputerName( LPTSTR lpBuffer, LPDWORD lpnSize);
 
//獲取計算機名稱(chēng)
TCHAR ch[20];
    memset(ch,0,20*sizeof(TCHAR));
    DWORD dw = 20;
    GetComputerName(ch,&dw);
    AfxMessageBox((CString)ch);
 
利用WinSock庫也可以獲取計算機的名稱(chēng),但是首先必須得初始化WinSock庫。
1.      gethostname函數:
This function returns the standard host name for the local machine.
int gethostname(char FAR* name, int namelen);
沒(méi)有錯誤則返回0,有錯誤則返回SOCKET_ERROR,通過(guò)WSAGetLastError獲取指定的錯誤代碼
char name[20];
    memset(name,0,sizeof(char)*20);
gethostname(name,20);
2.      gethostbyname函數:從主機數據庫中得到對應的主機的相應信息,如IP地址等。
This function retrieves host information corresponding to a host name from a host database.
struct hostent FAR* gethostbyname(const char FAR* name );//name是主機名字,一般是由gethostname獲得的名字。
 struct hostent {
  char FAR* h_name;//正規的主機名字
  char FAR* FAR* h_aliases;//一個(gè)以空指針結尾的可選主機名隊列
  short h_addrtype;//返回地址類(lèi)型
  short h_length;//每個(gè)地址的長(cháng)度
  char FAR* FAR* h_addr_list;};//空指針結尾的主機地址列表
 
//獲取IP地址
//char name[] = “www.sina.com.cn”;
struct hostent *p_HostEnt;
    p_HostEnt = gethostbyname(name);
    if(p_HostEnt != NULL)
    {
         WCHAR HostAddress[20];
         wsprintf(HostAddress,_T("%d.%d.%d.%d"),(p_HostEnt->h_addr_list[0][0] & 0x00ff),
(p_HostEnt->h_addr_list[0][1] & 0x00ff),(p_HostEnt->h_addr_list[0][2] & 0x00ff),(p_HostEnt->h_addr_list[0][3] & 0x00ff));
         AfxMessageBox((CString)HostAddress);
    }
3.      gethostbyaddr函數:從網(wǎng)絡(luò )地址得到對應的主機。
This function retrieves the host information corresponding to a network address.
struct hostent FAR* gethostbyaddr(const char FAR* addr,  int len,  int type);
addr為地址,len為地址的長(cháng)度,type為地址類(lèi)型,AF_INET。
//根據地址來(lái)獲取主機名字
char sin[] = "100.0.0.150";
    DWORD dw = inet_addr(sin);//網(wǎng)絡(luò )字節序
    int len = strlen(sin);
    hostent* pHostEnt;
pHostEnt = gethostbyaddr((LPSTR)(&dw),len,AF_INET);
 
二、獲取計算機子網(wǎng)掩碼
用函數GetAdaptersInfo可以獲取本地計算機的網(wǎng)絡(luò )信息,從而獲得該計算機的子網(wǎng)掩碼。
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,  PULONG pOutBufLen);
MSDN: This function retrieves adapter information for the local computer.
pAdapterInfo為指向IP_ADAPTER_INFO,此結構體包含了本地計算機上的一個(gè)特定網(wǎng)絡(luò )適配卡的信息:
typedef struct _IP_ADAPTER_INFO {
  struct _IP_ADAPTER_INFO* Next;
  DWORD ComboIndex;
  Char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];//網(wǎng)卡名
  char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];//對網(wǎng)卡的描述
  UINT AddressLength;//物理地址的長(cháng)度
  BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];//物理地址
  DWORD Index;//網(wǎng)卡索引號
  UINT Type;//網(wǎng)卡類(lèi)型
  UINT DhcpEnabled;//是否啟用了DHCP動(dòng)態(tài)IP分配
  PIP_ADDR_STRING CurrentIpAddress;//當前使用的IP
  IP_ADDR_STRING IpAddressList;//綁定到此網(wǎng)卡的IP地址鏈表
  IP_ADDR_STRING GatewayList;//網(wǎng)關(guān)地址鏈表
  IP_ADDR_STRING DhcpServer;//DHCP服務(wù)器地址
  BOOL HaveWins;//是否啟用了WINS
  IP_ADDR_STRING PrimaryWinsServer;//主WINS地址
  IP_ADDR_STRING SecondaryWinsServer;//輔WINS地址
  time_t LeaseObtained;//當前DHCP租借獲取的時(shí)間
  time_t LeaseExpires;//失效時(shí)間
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
需要包含頭文件Iphlpapi.h,需要包含庫文件Iphlpapi.lib
 
//獲取網(wǎng)卡的相關(guān)信息,還可以枚舉網(wǎng)卡
IP_ADAPTER_INFO* pAdapterInfo;
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    //第一次調用GetAdaptersInfo獲取適當的ulOutBufLen變量大小
    DWORD res = GetAdaptersInfo(pAdapterInfo,&ulOutBufLen);
    free (pAdapterInfo);
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc ( ulOutBufLen );
res = GetAdaptersInfo(pAdapterInfo,&ulOutBufLen);
 
三、獲取計算機的DNS設置
       采用函數GetNetWorkParams函數可以獲得本地計算機的網(wǎng)絡(luò )參數,從而獲得計算機的DNS設置。
       DWORD GetNetworkParams(  PFIXED_INFO pFixedInfo,   PULONG pOutBufLen);
MSDN: This function retrieves network parameters for the local computer.
       參數pFixedInfo定義為:
typedef struct {
  char HostName [MAX_HOSTNAME_LEN + 4];//主機名字
  char DomainName [MAX_DOMAIN_NAME_LEN + 4]; //域名
  PIP_ADDR_STRING CurrentDnsServer; //IP地址的一個(gè)節點(diǎn)
  IP_ADDR_STRING DnsServerList; //服務(wù)器IP地址鏈表
  UINT NodeType; //節點(diǎn)類(lèi)型
  char ScopeId [MAX_SCOPE_ID_LEN + 4]; //
  UINT EnableRouting; //
  UINT EnableProxy; //
  UINT EnableDns; //
} FIXED_INFO, *PFIXED_INFO;
 
//獲取DNS設置
FIXED_INFO *pFixedInfo;
    ULONG       ulOutBufLen;
    DWORD       dwRetVal;
    pFixedInfo = (FIXED_INFO *) malloc( sizeof( FIXED_INFO ) );
    ulOutBufLen = sizeof( FIXED_INFO );
    if ( GetNetworkParams( pFixedInfo, &ulOutBufLen ) == ERROR_BUFFER_OVERFLOW )
    {
         free( pFixedInfo );
         pFixedInfo = (FIXED_INFO *) malloc( ulOutBufLen );
    }
    dwRetVal = GetNetworkParams( pFixedInfo, &ulOutBufLen );
 
四、獲取計算機安裝的協(xié)議
       可以通過(guò)函數WSAEnumProtocols獲取安裝在本地主機上可用的網(wǎng)絡(luò )協(xié)議集。
int WSAEnumProtocols(  LPINT lpiProtocols,  LPWSAPROTOCOL_INFO lpProtocolBuffer,  ILPDWORD lpdwBufferLength);
MSDN:This function retrieves information about available transport protocols.
lpProtocolBuffer是結構WSAPROTOCOL填充的緩沖區,定義為:
typedef struct _WSAPROTOCOL_INFO {
  DWORD dwServiceFlags1;
  DWORD dwServiceFlags2;
  DWORD dwServiceFlags3;
  DWORD dwServiceFlags4;
  DWORD dwProviderFlags;
  GUID ProviderId;
  DWORD dwCatalogEntryId;
  WSAPROTOCOLCHAIN ProtocolChain;
  int iVersion;
  int iAddressFamily;
  int iMaxSockAddr;
  int iMinSockAddr;
  int iSocketType;
  int iProtocol;
  int iProtocolMaxOffset;
  int iNetworkByteOrder;
  int iSecurityScheme;
  DWORD dwMessageSize;
  DWORD dwProviderReserved;
  TCHAR szProtocol[WSAPROTOCOL_LEN+1];
} WSAPROTOCOL_INFO, *LPWSAPROTOCOL_INFO;
 
同時(shí)也可以調用函數getprotobyname獲取對應于給定協(xié)議名的相關(guān)協(xié)議信息:
struct PROTOENT* FAR getprotobyname(const char* name);
MSDN: The getprotobyname function retrieves the protocol information corresponding to a protocol name.
typedef struct protoent {
  char FAR* p_name;//正規協(xié)議名
  char FAR  FAR** p_aliases;//一個(gè)以空指針結尾的可選協(xié)議隊列
  short p_proto;//主機字節順序的協(xié)議號
} protoent;
 
還有一個(gè)函數根據協(xié)議號來(lái)獲取協(xié)議的相關(guān)信息:
struct PROTOENT* FAR getprotobynumber( int number );
 
五、獲取計算機提供的服務(wù)
       可以調用函數getservbyname來(lái)獲取對應給定服務(wù)名和服務(wù)協(xié)議的相關(guān)服務(wù)信息。
struct servent* FAR getservbyname( onst char* name,  const char* proto );
MSDN: The getservbyname function retrieves service information corresponding to a service name and protocol.
typedef struct servent {
  char FAR* s_name;//正規服務(wù)名
  char FAR  FAR** s_aliases; //一個(gè)以空指針結尾的可選協(xié)議隊列
  short s_port;//端口號
  char FAR* s_proto;//連接該服務(wù)時(shí)所用到的協(xié)議名
} servent;
 
也可以調用函數getservbyport來(lái)獲取對于給定端口號和協(xié)議名的相關(guān)服務(wù)信息:
struct servent* FAR getservbyport( int port, const char* proto );
 
六、獲取計算機的所有網(wǎng)絡(luò )資源
       函數WNetOpenEnum開(kāi)始一個(gè)網(wǎng)絡(luò )資源或存在的網(wǎng)絡(luò )連接枚舉值,可以通過(guò)調用函數WNetEnumResource獲取詳細的網(wǎng)絡(luò )資源。
DWORD WNetOpenEnum(
  DWORD dwScope,
  DWORD dwType,
  DWORD dwUsage,
  LPNETRESOURCE lpNetResource,
  LPHANDLE lphEnum
);
//上述具體各個(gè)參數見(jiàn)MSDN,NETRESOURCE結構體定義如下:
typedef struct _NETRESOURCE {
  DWORD dwScope;
  DWORD dwType;
  DWORD dwDisplayType;
  DWORD dwUsage;
  LPTSTR lpLocalName;
  LPTSTR lpRemoteName;
  LPTSTR lpComment;
  LPTSTR lpProvider;
} NETRESOURCE;
WNetEnumResource:This function continues a network-resource enumeration started by the WNetOpenEnum function.
DWORD WNetEnumResource(
  HANDLE hEnum, //這個(gè)參數為WNetOpenEnum的最后一個(gè)參數
  LPDWORD lpcCount,
  LPVOID lpBuffer,
  LPDWORD lpBufferSize
);
 
七、修改本地網(wǎng)絡(luò )設置
修改本地已經(jīng)存在的地址解析協(xié)議表:SetIpNetEntry:
DWORD SetIpNetEntry( PMIB_IPNETROW pArpEntry );
l        設置某一網(wǎng)絡(luò )接口卡的管理狀態(tài),SetIfentry:
DWORD SetIfEntry( PMIB_IFROW pIfRow );
l        為本地計算機特定的適配器添加地址,AddIpAddress:
DWORD AddIPAddress(
  IPAddr Address,
  IPMask IpMask,
  DWORD IfIndex,
  PULONG NTEContext,
  PULONG NTEInstance
);
l        刪除IP地址,DeleteIpAddress:
DWORD DeleteIPAddress( ULONG NTEContext );
 
八、獲取計算機TCP/IP的所有信息
       通過(guò)函數GetTcpStatics獲取本地的TCP協(xié)議統計信息:
DWORD GetTcpStatistics( PMIB_TCPSTATS pStats ); 參數pStats是指向MIB_TCPSTATS的指針,定義如下:
typedef struct _MIB_TCPSTATS {
  DWORD dwRtoAlgorithm;
  DWORD dwRtoMin;
  DWORD dwRtoMax;
  DWORD dwMaxConn;
  DWORD dwActiveOpens;
  DWORD dwPassiveOpens;
  DWORD dwAttemptFails;
  DWORD dwEstabResets;
  DWORD dwCurrEstab;
  DWORD dwInSegs;
  DWORD dwOutSegs;
  DWORD dwRetransSegs;
  DWORD dwInErrs;
  DWORD dwOutRsts;
  DWORD dwNumConns;
} MIB_TCPSTATS, *PMIB_TCPSTATS;
 
函數GetTcpTable獲取TCP協(xié)議連接表:
DWORD GetTcpTable(PMIB_TCPTABLE pTcpTable, PDWORD pdwSize, BOOL bOrder );
 
函數GetIpAddrTable獲取網(wǎng)絡(luò )接口卡與IP地址的映射表:
DWORD GetIpAddrTable( PMIB_IPADDRTABLE pIpAddrTable,PULONG pdwSize,BOOL bOrder );
 
GetIpStatics獲取當前IP統計信息:
DWORD GetIpStatistics( PMIB_IPSTATS pStats );
typedef struct _MIB_IPSTATS {
  DWORD dwForwarding;
  DWORD dwDefaultTTL;
  DWORD dwInReceives;
  DWORD dwInHdrErrors;
  DWORD dwInAddrErrors;
  DWORD dwForwDatagrams;
  DWORD dwInUnknownProtos;
  DWORD dwInDiscards;
  DWORD dwInDelivers;
  DWORD dwOutRequests;
  DWORD dwRoutingDiscards;
  DWORD dwOutDiscards;
  DWORD dwOutNoRoutes;
  DWORD dwReasmTimeout;
  DWORD dwReasmReqds;
  DWORD dwReasmOks;
  DWORD dwReasmFails;
  DWORD dwFragOks;
  DWORD dwFragFails;
  DWORD dwFragCreates;
  DWORD dwNumIf;
  DWORD dwNumAddr;
  DWORD dwNumRoutes;
} MIB_IPSTATS, *PMIB_IPSTATS;

本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/chshplp2008/archive/2009/11/12/4803389.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
hostent 和in_addr結構
謹慎使用LINUX平臺的gethostbyname
WinSock學(xué)習筆記(一)
Modbus TCP/IP協(xié)議的C++語(yǔ)言實(shí)現(轉帖) | 花花俠的IT世界
Socket函數參數說(shuō)明
Linux C語(yǔ)言實(shí)現簡(jiǎn)單爬蟲(chóng)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久