套接字相關的資料型別:sockaddr和sockaddr_in;sockaddr用來儲存乙個套接字,定義如下:
structsockaddr
;
sockaddr_in的功能與socdaddr相同
structsockaddr_in
;
structin_addr
;
struct hostent *gethostbyname(constchar *name);
結構體hostent的定義如下:
structhostent
;
用ip位址返回網域名稱:
struct hostent *gethostbyaddr(constvoid *addr,socklen_t len,int type);
由協議名取的協議資料:
struct protoent *getprotobyname(char *name);
結構體protoent定義如下:
structprotoent
;
由協議編號取得協議資訊:
struct protoent *getprotobynumber(int proto);
取得系統支援的所有協議:
struct protoent *getprotoent(void);
取得系統支援的網路服務:
struct servent *getservent(void);
結構體servent定義如下:
structservent
;
用名稱取得系統所支援的服務:
struct servent *getservbyname(char *name,char *proto); //name:伺服器名稱,proto伺服器所使用的協議;
由埠取得服務名稱:
struct servent *getservbyport(int port,char *proto)//port是埠的編號,需要注意的是這個埠號需要用htons()函式進行轉換,proto表示乙個協議的字串;
將網路位址轉換成長整型:
long inet_addr(char *cp); //cp表示乙個ip位址字串;
將長整型ip位址轉換成網路位址即大小端模式轉換:
char *inet_ntoa(struct in_addr in);
int inet_aton(const char *string, struct
in_addr
*addr);
例如:inet_aton("
127.0.0.1
", &adr_inet.s
in_addr)
inet_pton函式原型如下[將"點分十進位制" -> "整數"]:
int inet_pton(int af, constchar *src, void *dst);
//這個函式轉換字串到網路位址,第乙個引數af是位址族,轉換後存在dst中
constchar *inet_ntop(int af, const
void *src, char *dst, socklen_t cnt);
//這個函式轉換網路二進位制結構到ascii型別的位址,引數的作用和上面相同,只是多了乙個引數socklen_t cnt,
//他是所指向快取區dst的大小,避免溢位,如果快取區太小無法儲存位址的值,則返回乙個空指標,並將errno置為enospc
例如:
charipdotdec[
20];
//存放點分十進位制ip位址
struct in_addr s; //ipv4位址結構體
//輸入ip位址
printf("
please input ip address:
"); scanf("
%s", &ipdotdec);
//轉換 inet_pton(af_inet, ipdotdec, (void *)&s);
printf("
inet_pton: 0x%x\n
", s.s_addr); //
注意得到的位元組序
//反轉換 inet_ntop(af_inet, (void *)&s, ipdotdec, 16);
printf("
inet_ntop: %s\n
", ipdotdec);
將計算機中的32位長整型數轉換成網路字元順序的32位長整型數:
uint32_t htonl(uint32_t hostlong);
例如:servaddr.sin_addr.s_addr = htonl(inaddr_any);
將計算機中的16位整型數轉換成網路字元順序的16位整型數:
uint16_t htons(uint16_t hostshort);
例如:servaddr.sin_port = htons(serv_port);
將網路字元順序的32位長整型數轉換成計算機中的32位長整型數:
uint32_t ntohl(uint32_t netlong);
將網路字元順序的16位整型數轉換成計算機中的16位整型數:
uint16_t ntohs(uint16_t netshort);
常用的資料結構
人們常說資料結構,面試的時候也常被問道資料結構相關的問題,到底什麼是資料結構?資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。資料結構在計算機...
常用的資料結構
1.資料元素相互之間的關係稱為結構。2.四類基本結構 集合 線性結構 樹形結構 圖狀結構 1 集合結構 除了同屬於一種型別外,別無其它關係 2 線性結構 元素之間存在一對一關係常見型別有 陣列,鍊錶,佇列,棧,它們之間在操作上有所區別.例如 鍊錶可在任意位置插入或刪除元素,而佇列在隊尾插入元素,隊頭...
常用的資料結構
在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列 指標陣列 結構陣...