Linux網路程式設計API

2021-10-06 13:36:45 字數 3965 閱讀 3542

一、socket

函式作用:建立乙個新的socket套接字

函式原型:int socket(int domain,int type, int protocol)

af_inet:ipv4,af_inet6:ipv6

2)type:sock_stream    tcp面向資料流

sock_dgram      udp協議

sock_ram            提供原始網路協議

3)protocol:指定socket傳輸協議編號,設為0即可

返回值:成功返回socket套接字描述符,失敗返回-1

標頭檔案:#include

二、bind

函式原型:int bind(int sockfd,struct sockaddr* my_addr,socklen_t addrlen)

函式引數:1)sockfd:套接字描述符

structsockaddr_in

sa_family_t sin_family;//位址族:af_unix,af_inet,af_inet6

uint16_t sin_port;//埠號,要用網路位元組表示

structin_addr sin_addr;//ipv4位址結構體

structsockaddr

charsa_data[15];//位址值

//ipv4位址結構體

structin_addr

u_int32_t s_addr;//ipv4位址,要用網路位元組表示

標頭檔案:#include

#include

返回值:成功返回0,失敗返回-1

三、listen

函式作用:聆聽網路,等待連線

函式原型:int listen(int sockfd,int backlog)

函式引數: 1)sockfd:套接字描述符

2)backlog:允許接入的客戶端數目

注意:listen並沒有連線,只是設定socket的listen模式而已,真正的連線是accept

返回值:成功0,失敗-1

四、accept

函式作用:接收網路的連線,客戶端連線,三次握手

函式原型:int accept(int sockfd,struct sockaddr* addr,socklen_t* addlen)

2)addelen:struct sockaddr的長度

返回值:成功返回新的fd,出錯返回-1

函式accept所返回的檔案描述符是套接字描述符,該描述符連線到呼叫connect的客戶端。這個新的套接字描述符和原始套接字(sockfd)具有相同的套接字型別和位址族。傳給accept的原始套接字沒有關聯到這個連線,而是繼續保持可用狀態並接收其他連線請求。

五、connect

函式作用:建立socket連線,客戶端連線伺服器使用

函式原型:int connect(int sockfd,struct sockaddr* serv_addr,int addrlen)

2)addrlen:struct sockaddr的長度

返回值:成功0,出錯-1

六、send

函式作用:經過socket傳送資料,向對方傳送資料

函式原型:int send(int sock_fd,const void* msg,int len,unsigned int flags)

2)msg:傳送的資料

3)len:資料長度

4)flags:設為0

返回值:成功是實際傳遞出去的位元組數,出錯-1

七、recv

函式作用:經過socket接收資料

函式原型:int recv(int socket_fd,void* buf,int len,unsigned int flag)

函式引數:1)sock_fd:accept以後的socket套接字描述符

3)len:接收資料的最大長度

返回值:成功返回接收的位元組數,出錯-1

八、位元組序的轉化函式

標頭檔案 #include

uint32_t htonl(uint32_t hostin32)    32位資料傳送,從主機到網路

uint16_t htons(uint16_t hostin16)   16位資料傳送,從主機到網路

uint32_t ntohl(uint32_t netint32)    32位的資料接收,從網路到主機

uint16_t ntohs(uint16_t netint16)   16位的資料接收,從網路到主機

九、位址格式的轉換

標頭檔案 #include

inet_port()

函式原型:int inet_pton(int domain,const char* restrict str,void* restrict addr)

2) str:位址字串(點分十進位制)指標

返回值:成功1,格式無效0,出錯-1

函式作用:點分十進位制轉化位網路位元組序

inet_ntop()

函式原型:inet_ntop(int domain,const void* restrict addr,char* restrict str,socklen_t size)

3) str:位址字串(點分十進位制)指標

4) size:位址字串大小

函式作用:網路位元組序轉化成點分十進位制

十、位元組操作函式

#include

void bzero(void* dest,size_t nbytes)

void bcopy(const void* src,void* dest,size_t nbytes)

int bcmp(const void* ptr1,const void* ptr2,size_t nbytes)

返回值:0 相等,非0 不相等

#include

void* memset(void* dest,int c,size_t len);

void* memcpy(void* dest,void* src,size_t nbytes)

int memcmp(const void* ptr1,const void* ptr2,size_t nbytes)

返回值:0 相同,>0或<0 不相同,進行比較操作時,假定兩個不相同的位元組均為無符號字元(unsigned char)

十一、close

#include

int close(int sockfd)

返回:0 ok,-1 出錯

十二、read/write

標頭檔案:#include 

函式原型:ssize_t read(int fd,void* buf,size_t nbytes)

返回值:返回讀到的位元組數;若已到檔案尾返回0;若出錯返回-1

函式原型:ssize_t write(int fd,void* buf,size_t nbytes)

返回值:若成功返回已寫的位元組數;若出錯返回-1

十三、位址資訊函式getsockname/getpeername

getsockname

標頭檔案:#include

函式原型:int getsockname (int sockfd, struct sockaddr* address, socklen_t address_len)

函式返回值:成功返回0;失敗返回-1

函式作用:getsockname獲取sockfd對應的本端socket位址,並將其儲存於address引數指定的記憶體中,該socket位址長度則儲存於address_len引數指向的變數中

getpeername

標頭檔案:#include

函式原型:int getpeername (int sockfd, struct sockaddr* address, socklen_t address_len)

函式返回值:成功返回0;失敗返回-1

linux網路程式設計基礎api

socket系統呼叫,成功返回乙個socket檔案描述符,失敗返回 1並設定errno bind命名套接字,成功返回0,失敗返回 1並設定errno listen監聽socket,成功返回0,失敗返回 1並設定errno accept從listen監聽佇列中接受乙個連線,成功返回新的socket,失...

網路程式設計 常用API

該類用於標識網路上的硬體資源,表示網際網路協議的ip位址 該類沒有構造方法,所以不能直接new出乙個物件,可以通過該類的靜態方法獲得inetaddress的物件 public class ipdemo url 統一資源定位符,表示internet上某一資源的位址 public class urlde...

網路程式設計基礎API

網路位元組序 1.tcp ip協議規定,網路資料流應採用大端位元組序 0x12345678 小端儲存 78儲存在低位址 大端儲存 12儲存在低位址 網路位元組序和主機位元組序的轉換 include uint32 t htonl uint32 t hostlong uint16 t htons uin...