socket的一些基本結構
來源:互聯網
上載者:User
socket的一些基本結構一.socket的一些基本結構1.32位的IP地址:struct in_addr{ unsigned long s_addr;}2.TCP/IP所在的網際通訊域使用的通訊端地址格式:struct sockaddr_in{ short int sin_family; //表示所屬地址簇,TCP/IP必須是AF_INET unsigned short int sin_port; //表示連接埠號碼 struct in_addr sin_addr; //表示32位的IP地址,用in_addr結構表示 unsigned char sin_zero[8]; //表示全部填充0,保證和sockaddr大小相同}二.socket的一些輔助函數1.位元組序轉換函式:·htons : host to network byte order , short (unsigned) integer ·htonl : host to network byte order , long (unsigned) integer ·ntohs : network to host byte order , short (unsigned) integer ·ntohl : network to host byte order , long (unsigned) integer記憶方法: h表示host,n表示network,l表示long,s表示short例如: num = htons(Port_NUM); 表示將一個名叫Port_NUM的連接埠號碼轉換成網路位元組順序並賦值給num變數2.IP地址轉換函式: ·inet_addr() 將一個用點分十進位表示的IP地址字串轉換成32位不帶正負號的整數。此整數已經是 網路位元組順序,無需再調用htonl()·inet_ntoa() 將一個32位不帶正負號的整數轉換成一個點分十進位表示的IP地址字串,此函數接受 一個in_addr結構作為參數,將返回的字串儲存再一個static的緩衝區內,因 此,下次調用此函數時,將改變上次調用的結果。3.尋找主機資訊函數: struct hostent* gethostbyname(const char *name); 參數:輸入參數時需要解析的主機名稱,也可以是網域名稱 傳回值:返回一個描述主機資訊的結構hostent的指標 struct hostent { char *h_name; //主機的正式名稱 char **h_aliases; //主機的別名 int h_addrtype; //主機地址類型 int h_length; //地址長度 char **h_addr_list; //儲存主機地址的數組 #define h_addr h_addr_list[0] //為向後相容};對於TCP/IP協議而言,h_addrtype的值等於AF_INET,h_length的值是4,因為IP地址是4位元組。h_addr_list實質上是一個儲存地址的緩衝區,如果後續的代碼要利用這個緩衝區,需要進行強制類型轉換。