下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Linux 下的 Socket 網(wǎng)絡(luò)編程:一個簡易聊天室的實現(xiàn) - 徐慧軍高級程序設(shè)計與應(yīng)用實踐報告一個簡易聊天室的實現(xiàn)姓名:徐慧軍學(xué)號: 2121134專業(yè):電子與通信工程學(xué)院:信息科學(xué)與技術(shù)學(xué)院任課教師:廖曉飛2013 年 05 月 02 日Linux 下的 Socket 網(wǎng)絡(luò)編程:一個簡易聊天室的實現(xiàn)一 、socket 介紹socket 接口是 TCP/IP 網(wǎng)絡(luò)的 API,socket 接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP 網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)網(wǎng)絡(luò)編程,必須理解socket 接口。Internet上的TCP/IPsocket 接口設(shè)計者最先是將接口放在 Uni
2、x 操作系統(tǒng)里面的。如果了解 Unix 系統(tǒng)的輸入和輸出的話,就很容易了解 socket 了。網(wǎng)絡(luò)的 socket 數(shù)據(jù)傳輸是一種特殊的 I/O , socket 也是一種文件描述符。 socket 也具有一個類似于打開文件的函數(shù)調(diào)用 socket() ,該函數(shù)返回一個整型的 socket 描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該 socket 實現(xiàn)的。常用的 socket 類型有兩種:流式 socket (SOCK_STREAM)和數(shù)據(jù)報式 socket (SOCK_DGRAM)。流式是一種面向連接的 socket ,針對于面向連接的 TCP服務(wù)應(yīng)用; 數(shù)據(jù)報式 socket 是一種
3、無連接的 socket ,對應(yīng)于無連接的 UDP服務(wù)應(yīng)用。二、 Socket 創(chuàng)建socket 函數(shù)原型為:#include #include int socket(int domain, int type, int protocol);功能:調(diào)用成功,返回socket 文件描述符;失敗,返回1,并設(shè)置 errno參數(shù)說明:domain 指明所使用的協(xié)議族, 通常為 PF_INET,表示互聯(lián)網(wǎng)協(xié)議族 ( TCP/IP 協(xié)議 族;type 參數(shù)指定 socket 的類型:SOCK_STREAM提供有序、可靠、雙向及基于連接的字節(jié)流SOCK_DGRAM支持數(shù)據(jù)報SOCK_SEQPACKET提供有序
4、、可靠、雙向及基于連接的數(shù)據(jù)報通信SOCK_RAW提供對原始網(wǎng)絡(luò)協(xié)議的訪問SOCK_RDM提供可靠的數(shù)據(jù)報層,但是不保證有序性protocol通常賦值 0.socket 描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用 socket 函數(shù)時,socket 執(zhí)行體將建立一個 socket ,實際上 建立一個 socket意味著為一個 socket 數(shù)據(jù)結(jié)構(gòu)分配存儲空間。 socket 執(zhí)行體為你管理描述符表。兩個網(wǎng)絡(luò)程序之間的一個網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地協(xié)議地址、本地主機端口、遠端主機地址和遠端協(xié)議端口。 socket 數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。三、 Socket 邦定b
5、ind 函數(shù)原型為:#include #include int bind(int sock_fd,struct sockaddr *my_addr, int addrlen);功能說明:將套接字和指定的端口相連。成功返回0,否則,返回 1,并置 errno.參數(shù)說明: sock_fd 是調(diào)用 socket 函數(shù)返回的 socket 描述符 ,my_addr 是一個指向包含有本機 IP 地址及端口號等信息的 sockaddr 類型的指針;addrlen 常被設(shè)置為 sizeof(struct sockaddr)。struct sockaddr結(jié)構(gòu)類型是用來保存socket 信息的:struct
6、sockaddr unsigned short sa_family; /*地址族, AF_xxx */char sa_data14; /* 14字節(jié)的協(xié)議地址*/;sa_family 一般為 AF_INET,代表 Internet ( TCP/IP)地址族; sa_data 則包含該 socket 的 IP 地址和端口號。另外還有一種結(jié)構(gòu)類型:struct sockaddr_in short int sin_family; /*地址族*/unsigned short int sin_port; /*端口號*/struct in_addr sin_addr; /* IP地址*/大小unsigne
7、d char sin_zero8; /*/;填充0以保持與struct sockaddr同樣這個結(jié)構(gòu)更方便使用。 sin_zero用來將 sockaddr_in結(jié)構(gòu)填充到與structsockaddr 同樣的長度,可以用bzero() 或 memset() 函數(shù)將其置為零。指向sockaddr_in的指針和指向 sockaddr 的指針可以相互轉(zhuǎn)換,這意味著如果一個函數(shù)所需參數(shù)類型是 sockaddr sockaddr_in 的指針轉(zhuǎn)換為指向時,你可以在函數(shù)調(diào)用的時候?qū)⒁粋€指向sockaddr 的指針;或者相反。使用 bind 函數(shù)時,可以用下面的賦值實現(xiàn)自動獲得本機取一個沒有被占用的端口號:IP地址和隨機獲my_addr.sin_port = 0; /*系統(tǒng)隨機選擇一個未被使用的端口號*/my_addr.sin_addr.s_addr = INADDR_ANY; /*填入本機IP地址*/通過將 my_addr.sin_port置為 0,函數(shù)會自動為你選擇一個未占用的端口來使用。同樣,通過將my_addr.sin_addr.s_addr置為 INADDR_ANY,系統(tǒng)會自動填入本機 IP 地址。注意在使用bind函數(shù)是需要將sin_port和 sin_addr轉(zhuǎn)換成為網(wǎng)絡(luò)字節(jié)優(yōu)先順序。計算機數(shù)據(jù)存儲有兩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年江蘇連云港灌南縣金灌投資發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- 2024年二級建造師之二建公路工程實務(wù)題庫含答案(培優(yōu))
- 2025年貴州中鋁鋁業(yè)有限公司招聘筆試參考題庫含答案解析
- 二零二五年度市場營銷、策劃掛靠協(xié)議2篇
- 2025年青島地鐵運營有限公司招聘筆試參考題庫含答案解析
- 二零二五年度杭州電子科技大學(xué)校企合作產(chǎn)學(xué)研基地建設(shè)合同3篇
- 裝飾材料運輸合同三篇
- 二零二五年度白酒原材料供應(yīng)鏈委托合作合同3篇
- 二零二五年度科技園區(qū)股權(quán)質(zhì)押擔(dān)保合同范本3篇
- 二零二五年度排水管道安裝與疏通服務(wù)合同3篇
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之25:“9績效評價-9.2內(nèi)部審核”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 小升初典型奧數(shù):相遇問題(講義)-2023-2024學(xué)年六年級下冊數(shù)學(xué)人教版
- 河南省南陽市2022-2023學(xué)年高二上學(xué)期期終模擬測試物理試題(含答案解析)
- 2024年俄羅斯壓縮天然氣(CNG)和液化石油氣(LPG)車行業(yè)應(yīng)用與市場潛力評估
- 二年級上冊口算題大全(可直接打印)
- 少數(shù)民族完整版本
- 宜賓市翠屏區(qū)2022-2023學(xué)年七年級上學(xué)期期末生物試題【帶答案】
- 八年級下冊語文教材分析
- 2021泛海三江JB-QBL-QM210火災(zāi)自動報警控制器消防聯(lián)動控制器說明書
- 瑜伽社團教學(xué)計劃
- 十二歲生日慶典組委會事項
評論
0/150
提交評論