Unix Socket編程

Unix Socket編程

ID:41032651

大?。?28.00 KB

頁數(shù):35頁

時間:2019-08-14

Unix Socket編程_第1頁
Unix Socket編程_第2頁
Unix Socket編程_第3頁
Unix Socket編程_第4頁
Unix Socket編程_第5頁
資源描述:

《Unix Socket編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、UnixSocket編程.Socket?Socket是TCP/IP網(wǎng)絡(luò)的API,可以用它來開發(fā)網(wǎng)絡(luò)應(yīng)用程序?Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符.Socket的建立?intsocket(intdomain,?inttype,?intprotocol)?函數(shù)返回:?????????一個整型的Socket描述符,可以在后面調(diào)用它?參數(shù)說明:?????????intdomain????指明所使用的協(xié)議族,通常是PF_INET,表示網(wǎng)絡(luò)(TCP/IP)協(xié)議族????????????????????????說明我們網(wǎng)絡(luò)程序

2、所在的主機采用的通訊協(xié)族(AF_UNIX和AF_INET等).????????AF_UNIX:?只能夠用于單一的Unix系統(tǒng)進(jìn)程間通信,????????AF_INET:?是針對Internet的,因而可以允許在遠(yuǎn)程主機之間通信??????????(當(dāng)我們mansocket時發(fā)現(xiàn)domain可選項是PF_*而不是AF_*,因為glibc是posix的實現(xiàn)所以用PF代替了AF,不過我們都可以使用的)?????????inttype??????指定socket的類型,通常是SOCK_STREAM流式Socket這樣會提供按順序的,可靠,雙向,面向連接的

3、比特流和SOCK_DGRAM數(shù)據(jù)報式Socket這樣只會提供定長的,不可靠,無連接的通信?????????intprottocol?通常為0由于我們指定了type,所以這個地方我們一般只要用0來代替就可以了?應(yīng)用示例:?????????intsockfd=socket(PF_INET,?SOCK_STREAM,0);.Socket配置  Socket描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用Socket函數(shù)時,socket執(zhí)行體將建立一個Socket,實際上"建立一個Socket"意味著為一個Socket數(shù)據(jù)結(jié)構(gòu)分配存儲空間。S

4、ocket執(zhí)行體為你管理描述符表。  兩個網(wǎng)絡(luò)程序之間的一個網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地協(xié)議地址、本地主機端口、遠(yuǎn)端主機地址和遠(yuǎn)端協(xié)議端口。Socket數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。  通過socket調(diào)用返回一個socket描述符后,在使用socket進(jìn)行網(wǎng)絡(luò)傳輸以前,必須配置該socket:????1)面向連接的socket客戶端通過調(diào)用Connect函數(shù)在socket數(shù)據(jù)結(jié)構(gòu)中保存本地和遠(yuǎn)端信息。????2)無連接socket的客戶端和服務(wù)端以及面向連接socket的服務(wù)端通過調(diào)用bind函數(shù)來配置本地信息。??Bind函數(shù)將socke

5、t與本機上的一個端口相關(guān)聯(lián),隨后你就可以在該端口監(jiān)聽服務(wù)請求。??Bind函數(shù)原型為:  ???intbind(intsockfd,structsockaddr*my_addr,intaddrlen);Bind()函數(shù)在成功被調(diào)用時返回0;出現(xiàn)錯誤時返回"-1"并將errno置為相應(yīng)的錯誤號。?  ??Sockfd????是調(diào)用socket函數(shù)返回的socket描述符,??????my_addr??是一個指向包含有本機IP地址及端口號等信息的sockaddr類型的指針;???????addrlen??常被設(shè)置為sizeof(structsocka

6、ddr)。??????1)structsockaddr結(jié)構(gòu)類型是用來保存socket信息的: ???????structsockaddr????????{  ??????unsignedshortsa_family;??/*地址族,AF_xxx*/??????????charsa_data[14];??????????/*14字節(jié)的協(xié)議地址*/?????????};  ?????sa_family???一般為AF_INET,代表Internet(TCP/IP)地址族;????????sa_data??????則包含該socket的IP地址和端口號

7、。?????2)sockaddr_in結(jié)構(gòu)類型:  ?????structsockaddr_in?????{  ?????shortintsin_family;?????????/*地址族*/  ?????unsignedshortintsin_port;??/*端口號*/  ???????structin_addrsin_addr;??????/*IP地址*/  ???????unsignedcharsin_zero[8];????/*填充0以保持與structsockaddr同樣大小sin_zero用來將sockaddr_in結(jié)構(gòu)填充到與st

8、ructsockaddr同樣的長度,可以用bzero()或memset()函數(shù)將其置為零。*/  ?????};  ?????這個結(jié)構(gòu)更

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。