<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于uCLinux和ARM7的網(wǎng)絡(luò )通信設計

基于uCLinux和ARM7的網(wǎng)絡(luò )通信設計

作者: 時(shí)間:2013-04-12 來(lái)源:網(wǎng)絡(luò ) 收藏


3.1 中socket編程中用到的函數

(1) socket函數

為了執行I/O,一個(gè)進(jìn)程必須做的第一件事情就是調用socket函數,指定期望的通信協(xié)議類(lèi)型(使用IPv4的TCP、使用IPv6的UDP、Unix域字節流協(xié)議等),其函數結構如下:int socket(int family,int type,int protocol);

/*返回:非負描述字—成功,-1—出錯*/

代碼中的family指明協(xié)議族。套接口的類(lèi)型type是某個(gè)常值。一般來(lái)說(shuō),函數socket的參數protocol主設置為0,socket函數成功時(shí)返回一個(gè)小的非負整數值。為了得到這個(gè)數值,我們指定協(xié)議族(IPv4IP、v6或Unix)和套接口類(lèi)型(字節流、數據報或原始套接口)。
(2)connect函數

TCP客戶(hù)用connect函數來(lái)建立一個(gè)與TCP服務(wù)器的連接。

Int connect(int sockfd,const struct sockaddr* servaddr,socklen_t addrlen);/*返回:0—成功,-1—出錯*/

Sockfd由socket函數返回數值,第二、第三個(gè)參數分別是一個(gè)批晌套接口地址結構的指針和該結構的大小。套接口葉址結構必須含有服務(wù)器的IP地址和端口號。


(3)bind函數

函數bind給套接口分配一個(gè)本地協(xié)議地址。對于網(wǎng)際協(xié)議,協(xié)議地址是非顛倒2位IPv4地址16位的TCP或UDP端口號的組合。

Int bind(int sockfd,const struct sockaddr* myaddr,socklen_t addrlen);/*返回:0—成功,-1—出錯*/

第二個(gè)參數量個(gè)指向特定于協(xié)議地址結構的指針,第三個(gè)參數是該地址結構的長(cháng)度。對于TCP,調用函數bind可以指定一個(gè)端口,指定一個(gè)IP地址??梢?xún)烧叨贾付?,也可以一個(gè)也不指定。

(4)listen函數

函數listen僅被除數TCP服務(wù)器調用。它做兩件事件事情,當函數socket創(chuàng )建一個(gè)套接口時(shí),被假設為一個(gè)主動(dòng)套接口。也就是說(shuō),它是一個(gè)將調用connect發(fā)起連接的客戶(hù)套接口,函數listen將未連接的套接口轉換成被動(dòng)套接口,指示內核應接受指向此套接口的連接請求。根據TCP狀態(tài)轉換調用函數listen導致套接口從CLOSED狀態(tài)轉換到LISEN狀態(tài)。函數的第二個(gè)參數規定了內核為此套接口排隊的最大連接個(gè)數。

Int listen(int sockfd,int backlog);

/*返回:0—成功,-1—出錯*/

一般來(lái)說(shuō),此函數應在調用函數socket和bind之后,調用函數accept之前調用。

(5)accept函數

accept函數由TCP服務(wù)器調用,從已完成連接隊列頭返回下一個(gè)已完成連接。若已完成連接隊列為空,則進(jìn)程睡眠。(假定套接口噗缺省的阻塞方式)

int accept(int sockfd,struct sockaddr*cliaddr,socklen_t*addrlen);/*返回非負數值—OK,-1—出錯*/

參數cliaddr和addrlen用來(lái)返回連接對方進(jìn)程(客戶(hù))的協(xié)議地址。Addrlen是結果參數,調用前,將由*addrlen所指示的整數值置為由cliaddr所旨的套接口地址結構的長(cháng)度,返回時(shí),此整數值即為由內核存在此套接口地址結構內的準確字節數。
3.2 uClinux中編程的實(shí)現

中進(jìn)行socket編程,一般按照圖書(shū)資料所示流程編寫(xiě)網(wǎng)絡(luò )應用程序。

除了熟悉前文提出的函數外,還應知道兩個(gè)重要的數據結構。因為在計算機中,數據存儲有兩種字節優(yōu)先順序:高位字節優(yōu)先和低位字節優(yōu)先。在互聯(lián)網(wǎng)上,數據是以高位字節優(yōu)先順序傳輸的,所以對于在內部以低位字節優(yōu)先方式存儲的數據,需要進(jìn)行轉換才能在互聯(lián)網(wǎng)上傳輸。

linux相關(guān)文章:linux教程


數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>