作為新手!自己學的東西太多怕自己忘記,就做記錄了(主攻單片機類);博客的文章以單片機為主,上位機為輔 最近被物聯網雲伺服器的協議搞的醉生醉死,就打算自己做一個小型的伺服器,娛樂使用,打算用vc6.0寫,純基礎,希望能幫到大家 因為買了a6 GPRS模塊,只支持tcp的,udp的以後在做了,至於為什麼 ...
作為新手!自己學的東西太多怕自己忘記,就做記錄了(主攻單片機類);博客的文章以單片機為主,上位機為輔
最近被物聯網雲伺服器的協議搞的醉生醉死,就打算自己做一個小型的伺服器,娛樂使用,打算用vc6.0寫,純基礎,希望能幫到大家
因為買了a6 GPRS模塊,只支持tcp的,udp的以後在做了,至於為什麼用vc6.0,我用的是xp系統,沒錢
有錯誤請指出,本人業餘的(所寫的代碼,儘量註釋清楚)通過vc6.0的直接複製粘貼即可
(代碼來源於網路,
僅供學習交流,嚴禁用於商業用途
)
//WSAStartup()。Windows Sockets Asynchronous的啟動命令,Windows下的網路編程必須先啟用本命令,不然,後續的操作都會報錯:10093:WSAStartup() 調用未成功執行過。
//gethostname()獲得本機名
//gethostbyname()獲得本機網路信息,存儲到struct hostent *指針中,返回給調用者
//從struct hostent結構體信息中,獲取ip地址,轉換成字元串輸出
//下麵直接複製粘貼即可
#include "winsock2.h" #include <stdio.h> #pragma comment(lib,"ws2_32.lib") int main(int argc, char* argv[]) { WSADATA wsaData; char name[155]; char *ip; PHOSTENT hostinfo; if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) //WSAStartup()。Windows Sockets Asynchronous的啟動命令 { if( gethostname ( name, sizeof(name)) == 0) //gethostname()獲得本機名 { printf("hostname=%s\n", name); if((hostinfo = gethostbyname(name)) != NULL) //gethostbyname()獲得本機網路信息,存儲到struct hostent *指針中,返回給調用者 { ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); //得到地址字元串 printf("local host ip: %s\n",ip); } } WSACleanup( );//功能是終止Winsock 2 DLL (Ws2_32.dll) 的使用 } while(1);//這裡加入的是死迴圈,避免黑色程式框自動關閉 return 0;//直接退出去,調試情況下,無問題,不會退出 }
上面的while(1)可以註釋掉不用,下麵是運行效果