溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

socket API

發(fā)布時間:2020-04-25 11:11:21 來源:網(wǎng)絡 閱讀:461 作者:井然有序 欄目:網(wǎng)絡安全

1. 字節(jié)序

網(wǎng)絡協(xié)議使用‘大端字節(jié)序’(起始地址存的高序字節(jié))來傳送這些多字節(jié)整數(shù)。

#include <netinet/in.h>

uint16_t htons(uint16_t host16bitvalue);

uint32_t htonl(uint32_t host32bitvalue);

uint16_t ntohs(uint16_t net16bitvalue);

uint32_t ntohl(uint32_t net32bitvalue);

2. 點分十進制的ASCII碼字符串和32位的網(wǎng)絡字節(jié)序二進制值間轉(zhuǎn)換IPv4地址

[//下面兩個函數(shù)淘汰,寫出來幫忙過渡記憶

#include <arpa/inet.h>

//字符串符串有效則返回1,否則0

// 不足:出錯時addrptr返回 INADDR_NONE(32位1),又有手冊稱返回-1

int inet_aton(const char *strptr, struct in_addr *addrptr);

char* inet_ntoa(struct in_addr inaddr); // 不足:不可重入

]

// 優(yōu)點:ipv4和ipv6都適合 

// p:presentation n:numeric

#include <arpa/inet.h>

// 注意:成功返回1,輸入格式無效返回0,出錯返回-1;EAFNOSUPPORT

int inet_pton(int family, const char *strptr, void *addrptr);

// 成功返回指向結(jié)果的指針,出錯返回NULL; ENOSPC

const char* inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

3. socket

#include <sys/socket.h>

int socket(int family, int type, int protocol);

int connect(int sockfd, const struct sockaddr* servaddr, socklen_t addrlen);

//bind可以指定IP地址或端口,或兩者都指定,或兩者都不指定。

//bind系統(tǒng)保留端口,需要root權(quán)限

int bind(int sockfd, const struct sockaddr* myaddr, socklen_t addrlen);

//返回套接字關聯(lián)的本地協(xié)議地址

int getsockname(int sockfd, struct sockaddr* localaddr, socklen_t *addrlen);

//返回套接字關聯(lián)的遠程協(xié)議地址 如accept返回的客戶sockfd的對應地址

int getpeername(itn sockfd, struct sockaddr* peeraddr, socklen_t addrlen);

int listen(int sockfd, int backlog);// 還是不明白backlog指定為什么樣的值比較好?

監(jiān)聽套接字維護兩個隊列:未完成連接隊列(SYN_RCVD)和已完成連接隊列(ESTABLISHED)。

int accept(int listenfd, struct sockaddr* cliaddr, socklen_t *addrlen);

4. 建立連接后

#include <unistd.h>

int close(int sockfd);

/*

fork調(diào)用一次,返回兩次:調(diào)用進程返回子進程ID號,子進程返回0

fork的兩個用法:一是進程創(chuàng)建自身的一個副本;二是一個進程想要執(zhí)行另一個程序,副本調(diào)用 exec把自身替換成新的程序。

*/

pid_t fork(void);

pid_t getppid(void);//獲得父進程ID


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI