照著書敲的代碼愣是改了半天,VS大法好啊,環(huán)境就調(diào)了半天 把遇到的問題一起上傳上來吧 編譯器報(bào)錯(cuò)C4996 報(bào)錯(cuò)的情況通常為: 1 錯(cuò)誤 8 error C4996: \\\’sprintf\\\’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details. 此時(shí),通常有3種方式可以解決: (1)使用VS提供的 編譯器選擇性提供warning功能 link: http://msdn.microsoft.com/en-us/library/2c8f766e.aspx例:使用 #pragma warning( disable : 4996) 即可消除。 (2) 設(shè)置預(yù)處理選項(xiàng):a. Project properties->Configuration Properties->C/C ->Preprocessor->Preprocessor Definitionsb. 點(diǎn)擊按鈕 (…)c. 輸入:_CRT_SECURE_NO_WARNINGS。 注:使用 "n" 相隔 (3)在引用庫文件開頭寫一個(gè)宏定義 1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 來自 <https://zhidao.baidu.com/question/434204650624968924.html> //———————注意下面的話———————— // 開始卡在這里卡了好久,這里是檢查輸入的參數(shù),原來網(wǎng)上的版本是 2 意思是你還得輸入一個(gè)參數(shù), //就像 get_ip.exe wwwbaidu.com 這里就是兩個(gè)參數(shù),前面的加上后面的域名 // Validate the parameters if (argc != 1) { printf("usage: GetHostIP hostnamen"); return 1; } 好久沒碰C ,繞不過這個(gè)坎,勸大家好好學(xué)學(xué)吧—》 這個(gè)是網(wǎng)上的版本,大家參考吧 // GetHostIP.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。 //
#include "stdafx.h" #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #include <windows.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char **argv) { //—————————————– // Declare and initialize variables /* * WSADATA結(jié)構(gòu)被用來儲(chǔ)存調(diào)用AfxSocketInit全局函數(shù)返回的Windows Sockets初始化信息。 * 這個(gè)結(jié)構(gòu)被用來存儲(chǔ)被WSAStartup函數(shù)調(diào)用后返回的Windows Sockets數(shù)據(jù)。它包含Winsock.dll執(zhí)行的數(shù)據(jù)。 */ WSADATA wsaData; int iResult; DWORD dwError; /*每個(gè)word為2個(gè)字節(jié)的長度,DWORD 雙字即為4個(gè)字節(jié),每個(gè)字節(jié)是8位*/ int i = 0; struct hostent *remoteHost; /*域名*/ char *host_name; /*主機(jī)名*/ struct in_addr addr; /*ip*/ char **pAlias; // Validate the parameters if (argc != 2) { printf("usage: GetHostIP hostnamen"); return 1; } // 此處應(yīng)添加的程序如下 // 1. 當(dāng)初始化winsocket iResult = WSAStartup(MAKEWORD(2,2),&wsaData);/* & 取地址*/ // 2. 檢查該socket是否初始化成功,即該socket是否等于0;如果初始化不成功,應(yīng)當(dāng)給出錯(cuò)誤報(bào)警,并結(jié)束程序。 if(iResult!=0){ printf("初始化失敗!n"); return 1; } /////////////////結(jié)束/////////////////////////////////// host_name = argv[1]; printf("Calling gethostbyname with %sn", host_name); // 此處應(yīng)添加的程序如下 // 1. 利用函數(shù)gethostbyname(),獲取給定主機(jī)名的指針。 remoteHost = gethostbyname(host_name); // 2. 應(yīng)當(dāng)熟悉該結(jié)構(gòu)指針的結(jié)構(gòu) // 其中該函數(shù)申明如下:struct hostent* gethostbyname(const char *name) // 此處應(yīng)添加的程序如下 // 1. 如果上面函數(shù)返回的主機(jī)結(jié)構(gòu)指針為空(NULL),則做如下處理: // a. 利用函數(shù) int WSAGetLastError ( void ) 檢查當(dāng)前是否發(fā)生網(wǎng)絡(luò)錯(cuò)誤, // b. 返回的發(fā)生的錯(cuò)誤類型并作相應(yīng)的處理,比如,若沒有找到主機(jī)的錯(cuò)誤(此時(shí)該函數(shù)返回WSAHOST_NOT_FOUND) if(remoteHost == NULL){ //printf("gethostbynameError:%d",WSAGetLastError()); return 1; }else{ // 2. 如果返回的主機(jī)指針不為空,則做如下處理: // a. 打印出如下參數(shù):主機(jī)名和IP地址,若該主機(jī)對(duì)應(yīng)于多個(gè)ip地址,應(yīng)當(dāng)分別列出。 printf("主機(jī)名:%sn",remoteHost->h_name); for(i=0;;i ){ if(remoteHost->h_addr_list[i]!=0) { /*從緩存中把 p 拷貝到addr中 *同時(shí)addr.S_un.Saddr * in_addr ipAddr; * ipAddr.S_un.S_addr = inet_addr("127.0.0.1"); * 就是把字符串形式的ip地址轉(zhuǎn)化為0xXXXXXXXX形式的地址格式。 */ addr.s_addr = *(u_long*)remoteHost->h_addr_list[i]; printf("ip #%d%uFF1A%sn",i,inet_ntoa(addr)); /* inet_ntoa() 函數(shù)將網(wǎng)絡(luò)地址轉(zhuǎn)成二進(jìn)制的數(shù)字相關(guān)函數(shù):inet_aton, inet_ntoa */ } /* for(i=0;;i ){ char *p = remoteHost->h_addr_list[i]; if(p==NULL) break; /*從緩存中把 p 拷貝到addr中 *同時(shí)addr.S_un.Saddr * in_addr ipAddr; * ipAddr.S_un.S_addr = inet_addr("127.0.0.1"); * 就是把字符串形式的ip地址轉(zhuǎn)化為0xXXXXXXXX形式的地址格式。 * memcpy(&addr.S_un.S_addr,p,remoteHost->h_length); printf("ip地址為:%sn",inet_ntoa(addr)); */ } } // 此處應(yīng)添加的程序如下 // 程序完成后應(yīng)當(dāng)適當(dāng)測(cè)試,需要進(jìn)行的測(cè)試如下: // 1. 測(cè)試主機(jī)結(jié)構(gòu)指針獲取失敗 // 2. 測(cè)試包含多個(gè)IP地址的主機(jī) // 3. 你能想到的任何可能出現(xiàn)的異常情況 /////////////////結(jié)束/////////////////////////////////// system("pause"); /*防止窗體關(guān)閉函數(shù)*/ return 0; }
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問題,請(qǐng)?jiān)L問三五互聯(lián)官網(wǎng):www.shinetop.cn