色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > socket網(wǎng)絡(luò)編程基礎(chǔ)

socket網(wǎng)絡(luò)編程基礎(chǔ) 時(shí)間:2018-07-30      來(lái)源:未知

網(wǎng)絡(luò)編程

socket類型:

流式套接字(SOCK_STREAM):提供了一個(gè)面向連接,可靠地?cái)?shù)據(jù)傳輸服務(wù),數(shù)據(jù)無(wú)差錯(cuò),無(wú)重復(fù)的發(fā)送切按發(fā)送順序接收。內(nèi)置流量控制,避免數(shù)據(jù)流淹沒(méi)慢的接收方。數(shù)據(jù)被看做字節(jié)流,無(wú)長(zhǎng)度限制。

數(shù)據(jù)報(bào)套接字(SOCK_DGRAM):提供無(wú)連接服務(wù)。數(shù)據(jù)包以獨(dú)立數(shù)據(jù)包的形式發(fā)送,不提供無(wú)差錯(cuò)保證,數(shù)據(jù)可能丟失或重復(fù),順序發(fā)送,可能亂序接收。

原始套接字(SOCK_RAM):可以對(duì)較低層次協(xié)議,如IP、ICMP直接訪問(wèn)

TCP和UDP協(xié)議對(duì)比:TCP面向連接,UDP面向無(wú)連接;TCP需要系統(tǒng)提供的資源更多;TCP以流模式發(fā)送數(shù)據(jù),UDP以數(shù)據(jù)報(bào)的方式發(fā)送數(shù)據(jù);TCP保證數(shù)據(jù)的正確性和順序,UDP不保證。

MSN/QQ使用的傳輸層協(xié)議是:登錄TCP 、聊天文件傳輸U(kuò)DP

TCP(傳輸控制協(xié)議):是一種面向連接的傳輸層協(xié)議,他能提供可靠性通信(數(shù)據(jù)無(wú)誤,數(shù)據(jù)無(wú)丟失,數(shù)據(jù)無(wú)失序,數(shù)據(jù)無(wú)重復(fù)到達(dá)的通信)

三次握手:

第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(Synchronize Sequence Numbers)。

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。

四次揮手:(1) TCP客戶端發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶到服務(wù)器的數(shù)據(jù)傳送。

(2)服務(wù)器收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)。

(3)服務(wù)器關(guān)閉客戶端的連接,發(fā)送一個(gè)FIN給客戶端。

(4)客戶端發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1。

TCP適用情況:傳輸質(zhì)量要求高,以及傳輸數(shù)據(jù)量大的通信;需要可靠的數(shù)據(jù)傳輸?shù)臅r(shí)候。

UDP:用戶數(shù)據(jù)報(bào)協(xié)議,是不可靠的無(wú)連接的協(xié)議。在數(shù)據(jù)發(fā)送前不需要進(jìn)行連接,相對(duì)來(lái)說(shuō)效率更高。

int inet_aton(const char *cp, struct in_addr *inp);

typedef uint32_t in_addr_t;

struct in_addr {

in_addr_t s_addr;

};

功能: 將點(diǎn)分形式的IP地址裝換為32位的無(wú)符號(hào)數(shù);

網(wǎng)絡(luò)編程接口socket:在OSI模型中,位于會(huì)話層和傳輸層之間。socket()用來(lái)建立一個(gè)新的socket, 也就是向系統(tǒng)注冊(cè), 通知系統(tǒng)建立一通信端口。參數(shù)domain 指定使用何種的地址類型, 完整的定義在/usr/include/bits/socket.h 內(nèi), 底下是常見(jiàn)的協(xié)議:

PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 進(jìn)程通信協(xié)議

PF_INET?AF_INET Ipv4網(wǎng)絡(luò)協(xié)議

PF_INET6/AF_INET6 Ipv6 網(wǎng)絡(luò)協(xié)議

PF_IPX/AF_IPX IPX-Novell協(xié)議

PF_NETLINK/AF_NETLINK 核心用戶接口裝置

PF_X25/AF_X25 ITU-T X.25/ISO-8208 協(xié)議

PF_AX25/AF_AX25 業(yè)余無(wú)線AX.25協(xié)議

PF_ATMPVC/AF_ATMPVC 存取原始ATM PVCs

PF_APPLETALK/AF_APPLETALK appletalk(DDP)協(xié)議

PF_PACKET/AF_PACKET 初級(jí)封包接口

TCP端口號(hào)和UDP端口號(hào)獨(dú)立。

HBO(主機(jī)字節(jié)序):小端序:底序字節(jié)存儲(chǔ)在低地址;大端序:高序字節(jié)存儲(chǔ)在高地址。

網(wǎng)絡(luò)中傳輸?shù)淖止?jié)序必須按照網(wǎng)絡(luò)字節(jié)序,即大端字節(jié)序;

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

功能:創(chuàng)建通信的文件描述符;

domain:作用范圍;

AF_UNIX, AF_LOCAL Local communication unix(7)

AF_INET IPv4 Internet protocols ip(7)

AF_INET6 IPv6 Internet protocols ipv6(7)

type:套接字類型;

SOCK_STREAM 流式套接字(TCP);

SOCK_DGRAM 數(shù)據(jù)報(bào)套接字(UDP);

SOCK_RAW 原始套接字:不會(huì)經(jīng)過(guò)傳輸層,直接從應(yīng)用層到網(wǎng)絡(luò)層

protocol:協(xié)議的類型(默認(rèn)使用0);

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

int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen);

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

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

功能:

設(shè)置服務(wù)器的IP地址和端口號(hào);

參數(shù):

sockfd:要設(shè)置的套接字文件描述符;

addr:服務(wù)器的IP地址和端口號(hào):

通用地址結(jié)構(gòu);

struct sockaddr {

sa_family_t sa_family; //協(xié)議族

char sa_data[14]; //ip地址+端口號(hào);

}

專用的地址結(jié)構(gòu):(man 7 ip);

struct sockaddr_in {

sa_family_t sin_family; /* address family: AF_INET */

in_port_t sin_port; /* port in network byte order */

struct in_addr sin_addr; /* internet address */

};

/* Internet address. */

struct in_addr {

uint32_t s_addr; /* address in network byte order */

};

addrlen:地址空間的大小;

int listen(int sockfd, int backlog);

功能:

啟動(dòng)監(jiān)聽(tīng);

參數(shù):

sockfd: 所要啟動(dòng)的套接字;

backlog:所要?jiǎng)?chuàng)建的通信隊(duì)列的大小;

int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);

功能:設(shè)置套接字屬性;

參數(shù):

sockfd:所要設(shè)置的套接字;

level:指定控制套接字的層次(通用套接字、tcp、ip)

optname:具體選項(xiàng)()

optval:存儲(chǔ)套接字的屬性,

optlen:屬性所占空間大小;

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

上一篇:串口基本知識(shí)及串口協(xié)議詳解

下一篇:sqlite3數(shù)據(jù)庫(kù)常用指令及函數(shù)接口介紹

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 爆乳肉体大杂交soe646在线观看 | 亚洲熟妇无码一区二区三区 | 久久AV无码精品人妻系列 | 国内精品久久人妻无码网站 | 在病房里和护士啪啪 | 精品一品国产午夜福利视频 | 欧美又粗又大xxxxbbbb疯狂 | 宅男午夜成年影视在线观看 | 久久99国产精品久久99软件 | 亚洲AV无码国产精品久久不卡 | 137日本免费肉体摄影 | 又粗又黄又爽视频免费看 | 性少妇tubevⅰdeos高清 | 久久综合给合久久狠狠狠88 | 狠狠色丁香婷婷综合影院 | 亚洲日韩精品一区二区三区无码 | 在线亚洲97SE亚洲综合在线 | 特黄AAAAAAA片免费视频 | 国精产品W灬源码1688伊在线 | 人人色在线视频播放 | 亚洲色偷偷综合亚洲AV伊人 | 国产对白老熟女正在播放 | A级毛片100部免费观看 | 亚洲伊人久久综合成人网站 | 日韩精品人成在线播放 | 国产亚洲精品久久久久久网站 | 国产精品久久久久久久曹县翰林府 | 国产欧美一二三区在线粉嫩 | 国产又色又爽又黄的视频在线观看 | jizz大全日本护士喷奶水 | 精品国产在天天在线观看 | 精品国产一区二区三区四区色欲 | 亚洲第一网站男人都懂 | aⅴ日本亚洲欧洲免费天堂 中文字幕乱码亚洲无线码 欧美最猛性xxxxx69 | 日批免费观看视频 | 西游性淫片a级在线观看 | 亚洲人成网线在线播放va | 精品无码国产一区二区三区. | 麻豆md传媒md0049入口 | 亚洲老妇老熟妇 | 免费情侣作爱视频 |