windows網路程式設計常用

2021-07-11 16:24:54 字數 1780 閱讀 2539

主機的位元組序與網路位元組序

uint32_t htonl(uint32_t hostlong); 

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

h---host 本地主機,to  就是to 了,n  ---net 網路的意思,l 是 unsigned long,"s"表示short,"l"表示long

in_addr

與字串的轉換

typedef struct in_addr s_un_b;

struct s_un_w;

ulong s_addr;

} s_un;

#define s_addr  s_un.s_addr /* can be used for most tcp & ip code */

#define s_host  s_un.s_un_b.s_b2    // host on imp

#define s_net   s_un.s_un_b.s_b1    // network

#define s_imp   s_un.s_un_w.s_w2    // imp

#define s_impno s_un.s_un_b.s_b4    // imp #

#define s_lh    s_un.s_un_b.s_b3    // logical host

} in_addr, *pin_addr, far *lpin_addr;

typedef struct sockaddr_in sockaddr_in, *psockaddr_in;

unsigned long wsaapi  inet_addr(__in in const char far * cp );

char far *wsaapi inet_ntoa( in struct in_addr in);

inet_addr函式需要乙個字串作為其引數,該字串指定了以點分十進位制格式表示的ip位址(例如:192.168.0.16)。而且inet_addr函式會返回乙個適合分配給s_addr的u_long型別的數值。

inet_ntoa函式會完成相反的轉換,它接受乙個in_addr結構體型別的引數並返回乙個以點分十進位制格式表示的ip位址字串。

獲取本地ip 引入

ws2_32.lib

void initwinsock()}}

string getlocalip()

}strlocalip = buf;

return strlocalip;}

獲取子網掩碼

再引入iphlpapi.lib

std::string getmaskfromip(const std::string &ip)  

if (no_error == getadaptersinfo(padapterinfo, &uloutbuflen))  

// 在這裡迴圈可以獲取所有網絡卡資訊  

padapter = padapter->next;  

}  }  

if (padapterinfo)  

return ret;  

獲取廣播位址 /*

演算法: 

1. 子網掩碼與ip位址進行位與運算,得處網路位址

2. 網路位址 | (~子網掩碼),得出廣播位址*/

string getbroadcastip(string strip,string strnetmask)

Windows網路程式設計

1.先總結一些會用到的知識 中計算機都分配乙個位址,該位址是乙個 32位的數值表示 客戶端和伺服器通訊的時候需要指定乙個 ip位址 和埠。ip位址 一般是用 internet標準 點分表示法 像a.b.c.d 一樣指定 的,每乙個字母代表乙個位元組的數字 十進位制 八進位制 或十六進製制 從左到右分...

windows網路程式設計

winsock是windows系統下利用socket套接字進行網路程式設計的相關函式,是windows下的網路程式設計介面。winsock在常見的windows平台上有兩個主要的版本,即winsock1和winsock2。編寫與winsock1相容的程式你需要引用標頭檔案winsock.h,如果編寫...

windows網路程式設計

include include include 要使用winsock api,就要包含ws2 32.lib這個庫 pragma comment lib,ws2 32.lib int main int argc,char ar 為埠號賦值 short port if port atoi ar 1 0 ...