freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux網(wǎng)絡(luò)聊天室的設(shè)計(jì)3-文庫吧資料

2025-06-24 16:47本頁面
  

【正文】 通過Socket實(shí)現(xiàn)點(diǎn)對點(diǎn)通信需要掌握的4個編程要點(diǎn)。(3) 按要求通過socket發(fā)送和接受數(shù)據(jù)。 Socket接口上TCP/IP網(wǎng)絡(luò)應(yīng)用程序接口(API),它提供了許多函數(shù)和例程,程序員可以使用它們來開發(fā)TCP/IP網(wǎng)絡(luò)應(yīng)用程序。摘要: 在Linux 下開發(fā)高性能的網(wǎng)絡(luò)通信程序, 是充分發(fā)揮Linux 網(wǎng)絡(luò)特性的一個關(guān)鍵因素。recv()返回實(shí)際上接收的字節(jié)數(shù), 或當(dāng)出現(xiàn)錯誤時,返回 1 并置相應(yīng)的errno 值。 len 是緩沖的長度。sockfd 是接收數(shù)據(jù)的socket 描述符。當(dāng)send()返回值與len 不匹配時, 應(yīng)該對這種情況進(jìn)行處理。 send()函數(shù)返回實(shí)際上發(fā)送出的字節(jié)數(shù), 可能會少于希望發(fā)送的數(shù)據(jù)。len 是以字節(jié)為單位的數(shù)據(jù)的長度。send()函數(shù)原型為:int send ( int sockfd, const void msg, int len, intflags) 。accept()之前, 通常將addrlen 初始化為0。 addrlen 通常為一個指向值為sizeof( struct sockaddr_in) 的整型指針變量。int accept( int sockfd, void addr, int addrlen) 。通過調(diào)用accept()函數(shù)為其建立一個連接, accept()函數(shù)將返回一個新的socket 描述符, 來供這個新連接來使用。當(dāng)listen 遇到錯誤時返回 1, errno 被置為相應(yīng)的錯誤碼。backlog 指定在請求隊(duì)列中允許的最大請求數(shù), 進(jìn)入的連接請求將在隊(duì)列中等待accept()它們。 int listen( int sockfd, int backlog) 。進(jìn)行客戶端程序設(shè)計(jì)無須調(diào)用bind(), 因?yàn)檫@種情況下只需知道目的機(jī)器的IP 地址, 而客戶通過哪個端口與服務(wù)器建立連接并不需要關(guān)心, 內(nèi)核會自動選擇一個未被占用的端口供客戶端來使用。 serv_addr是包含目的機(jī)IP 地址和端口號的指針, addrlen 為結(jié)構(gòu)的大小。connect()函數(shù)原型為:int connect ( int sockfd, struct sockaddrserv_addr, int addrlen) 。另外要注意的是, 當(dāng)調(diào)用函數(shù)時, 一般不要將端口號置為小于1024 的值, 因?yàn)?~1024 是保留端口號, 可以使用大于1024 中任何一個沒有被占用的端口號。bind()函數(shù)在成功被調(diào)用時返回0。 / 填入本機(jī)IP 地址 / 置為0, 函數(shù)會自動為選擇一個未占用的端口來使用。需要指出的是, 可以用下面的賦值實(shí)現(xiàn)自動獲得本機(jī)IP 地址和隨機(jī)獲取一個沒有被占用的端口號:=0。sockfd 是一個socket 描述符, my_addr 是一個指圖計(jì)算機(jī)應(yīng)用向包含有本機(jī)IP 地址及端口號等信息的sockaddr 類型的指針。這一步對客戶端不是必需的。( 2) 步驟2: 綁定套接口bind() 當(dāng)用socket()建立套接口后, 該套接口還是處于無名狀態(tài)的, 無名套接口就象沒有號碼的電話一樣,別人無法向發(fā)送信息( 在同一linux 內(nèi)核下可實(shí)現(xiàn)無名狀態(tài)下通信) 。protocol 通常賦值“0”, 意味套接口使用TCP /IP 協(xié)議。 Socket 通信程序開發(fā)下面詳細(xì)說明Socket 通信程序的開發(fā)過程:( 1) 步驟1: 建立套接口socket() int sockfd = socket ( int domain, int type, intprotocol) , 其中domain 參數(shù)指定socket 協(xié)議族, 包括PF_LOACL 和PF_INET, PF_LOACL 表示使用本地套接口, PF_INET 表示使用Internet 套接口。連接一旦建立,客戶機(jī)和服務(wù)器之間就可以通過調(diào)用send()和recv()來發(fā)送和接收數(shù)據(jù)。Socket 工作過程如下: 服務(wù)器首先啟動, 通過調(diào)用Socket (), 建立一個Socket, 然后調(diào)用bind()將該Socket 和本地網(wǎng)絡(luò)地址綁系在一起, 再調(diào)用listen()使Socket 做好偵聽的準(zhǔn)備, 并規(guī)定它的請求隊(duì)列的長度,之后就調(diào)用accept()來接收連接。常用于檢驗(yàn)新的協(xié)議實(shí)現(xiàn)或訪問。數(shù)據(jù)包以獨(dú)立包形式被發(fā)送, 不提供無錯保證, 數(shù)據(jù)可能丟失或重復(fù), 并且接收順序混亂。 數(shù)據(jù)被看作是字節(jié)流, 無長度限制。提供一個面向連接、可靠的數(shù)據(jù)傳輸服務(wù), 數(shù)據(jù)無差錯、無重復(fù)地發(fā)送, 且按發(fā)送順序接收。套接字在TCP /IP 網(wǎng)絡(luò)模型中的地位如圖1所示。在Linux 中, 套接字接口是應(yīng)用程序訪問下層的網(wǎng)絡(luò)協(xié)議的惟一方法。TCP /IP 是計(jì)算機(jī)互連最常使用的網(wǎng)絡(luò)通訊協(xié)議, TCP /IP 的核心部分由網(wǎng)絡(luò)操作系統(tǒng)的內(nèi)核實(shí)現(xiàn),應(yīng)用程序通過編程接口來訪問TCP /IP。而套接口中的網(wǎng)絡(luò)地址就相當(dāng)于電話號碼。套接口與電話的相似性還表現(xiàn)在另一方面。Linux 中的套接口與電話非常相似。對方的電話號碼( 在對方的位置處) 。2 Socket 原理簡介 當(dāng)用電話與他人通信時, 必須拿起話筒, 撥叫對方的電話號碼, 然后等待對方的應(yīng)答。Linux 操作系統(tǒng)具有良好的穩(wěn)定性和出色的網(wǎng)絡(luò)性能, 因此被廣泛應(yīng)用于網(wǎng)絡(luò)服務(wù)領(lǐng)域。在應(yīng)用開發(fā)中就像使用文件句柄一樣, 可以對Socket 句柄進(jìn)行讀、寫操作。Socket 在計(jì)算機(jī)中提供了一個通信端口, 可以通過這個端口與任何一個具有Socket 接口的計(jì)算機(jī)通信。圖13 Socket通信流程圖(socket)的概念 1 介紹 上世紀(jì)中后期, 在美國國防部高研署(DARPA)將TCP /IP 的軟件提供給加利尼亞大學(xué)Berkeley 分校后, TCP /IP 很快被集成到Unix 中, 同時出現(xiàn)了許多成熟的TCP /IP 應(yīng)用程序接口(API) 。所以多個客戶端之間的通信就變?yōu)榱丝蛻舳伺c服務(wù)端的通信。圖11 用三次握手建立TCP連接 對于兩個計(jì)算機(jī)之間連接的釋放過程也需要類似的3次握手的互相確認(rèn)的過程,如實(shí)驗(yàn)圖12所示。 由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),所以不可避免地增加了許多系統(tǒng)開銷,比如確認(rèn)、流量控制、計(jì)時器以及連接管理等都需要占用許多系統(tǒng)的時空資源。TCP提供面向連接的服務(wù),在傳送數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳送結(jié)束后要釋放連接。它的特點(diǎn)是:因無連接,故提供的是不可靠的信道,但也是因無連接而具有很好的傳輸效率。它是以中午連接的邏輯通信信道。本聯(lián)盟就是想通過bazaar開發(fā)模型,在網(wǎng)上召集一些Linux的愛好者,開發(fā)出更優(yōu)秀的操作系統(tǒng)或軟件。Linux這種獨(dú)特的自由流暢的開發(fā)模型已被命名為bazaar(集市模型)。(3) Linux的明天 Linux最強(qiáng)大的生命力在于其公開的開發(fā)過程。 桌面上的Linux也在繼續(xù)完善。它既被當(dāng)作郵件服務(wù)器的一種候選平臺,也被當(dāng)作一種強(qiáng)壯而安全的防火墻。(2) Linux的今天 作為一各服務(wù)器級的操作系統(tǒng),Linux已經(jīng)成熟了。 1
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1