UNP學習筆記 套接字位址相關函式

2021-08-09 05:48:10 字數 1693 閱讀 6723

在不同的系統中會使用兩種不同的方式儲存資料,即大端位元組序和小端位元組序。大端位元組序是指將資料的有效位從起始位址開始由高到低依次存入記憶體,小端位元組序則相反。

網際協議使用大端位元組序傳送資料,而由於系統的不同,主機使用的資料儲存方式是不確定的。所以要用到將資料在主機位元組序和網路位元組序間轉換的函式。

#inlcude 

unit16_t htons(uint16_t host16bitvalue);

unit32_t htonl(uint32_t host32bitvalue);

unit16_t ntohs(uint16_t net16bitvalue);

unit32_t ntohl(uint32_t net32bitvalue);

//h,n分別代表host和net,函式功能由函式名即可知

由於我們要操作的字段不一定是一空字元結尾的c字串,所以不能使用在string.h標頭檔案下定義的str打頭的字串處理函式。而要使用另外的函式,它們既不對資料作解釋,也不假設資料以空字元結束。下面是定義在兩組不同標頭檔案下的函式。

#include 

void *memset(void *dest, int c, size_t len);//將目標位元組串指定數目的位元組置為c

void *memcpy(void *dest, const

void *src, size_t nbytes);//將指定數目的位元組從src拷貝到dest

intmemcmp(const

void *ptr1, const

void *ptr2, size_t nbytes);//比較前n個位元組,相等返回0,ptr1>ptr2 返回值大於0,否則小於0

void bzero(void *dest, size_t nbytes); //將指定數目的位元組置為0

void bcopy(const

void *src, void *dest, size_t nbytes); //同memcpy

int bcmp(const

void *ptr1, const

void *ptr2, size_t nbytes); /* 相同返回0,否則返回非0

位址轉換函式用於在ascii字串和網路位元組序的二進位制串之間轉換網際位址。

#include 

int inet_aton(const

char *strptr, struct in_addr *addptr);//將字串strptr轉換成32位網路位元組序二進位制值,存入addptr,若字串有效返回1,否則為0

int_addr_t inet_addr(const

char *strptr);//進行與inet_aton相同的轉換,返回32位二進位制值

char *inet_ntoa(struct in_addr inaddr);//將32位網路位元組序二進位制值轉換為點分十進位制數串

#include 

int inet_pton(int family, const

char *strptr, void *addrptr);

const

char *inet_ntop(int family, const

void *addrptr, char *strptr, size_t len);

UNP學習筆記(第七章 套接字選項)

有多種方法獲取和設定影響套接字的選項 1.getsockopt和setsockopt函式 2.fcntl函式 3.ioctl函式 getsockopt和setsockopt函式 這兩個函式僅用於套接字 include int getsockopt int sockfd,int level,int o...

UNP學習筆記(第七章 套接字選項)

有多種方法獲取和設定影響套接字的選項 1.getsockopt和setsockopt函式 2.fcntl函式 3.ioctl函式 getsockopt和setsockopt函式 這兩個函式僅用於套接字 include int getsockopt int sockfd,int level,int o...

UNP學習筆記六 套接字對(埠號和IP位址)

六 套接字對 埠號和ip位址 要說套接字程式設計的基礎是什麼,我認為就是套接字對。在兩台主機connect時,就是通過對應的套接字聯絡起來的。對客戶來說 需要明確自己要連線的伺服器ip和埠號,而自己的ip和埠號一般由核心預設了,會在連線後傳給伺服器。對伺服器來說 需要明確自己監聽的本機的埠就行,本機...