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

正文內(nèi)容

基于linux網(wǎng)絡(luò)聊天室的設(shè)計(jì)_畢業(yè)設(shè)計(jì)論文(留存版)

  

【正文】 Berkeley 分校后 , TCP /IP 很快被集成到 Unix 中 , 同時(shí)出現(xiàn)了許多成熟的 TCP /IP 應(yīng)用程序接口 (API) 。 Linux 這種獨(dú)特的自由流暢的開(kāi)發(fā)模型已被命名為bazaar(集市模型)。與此同時(shí) ,其它獨(dú)立開(kāi)發(fā)的 Unix 版本也開(kāi)始萌生。 基于 Linux 網(wǎng)絡(luò)聊天室的設(shè)計(jì) 班級(jí): 網(wǎng)絡(luò)工程 103 1 背景 開(kāi)發(fā)背景 在網(wǎng)絡(luò)無(wú)所不在的今天,在 Inter 上,有 ICQ、 MSN、 Gtalk、 OICQ 等網(wǎng)絡(luò)聊天軟件,極大程度上方便了處于在世界各地的友人之間的相互聯(lián)系,也使世界好像一下子縮小了, 不管你在哪里,只要你上了網(wǎng),打開(kāi)這些軟件,就可以給你的朋友發(fā)送信息,不管對(duì)方是否也同時(shí)在線,只要知道他有號(hào)碼。加州大學(xué)伯克利分校的計(jì)算機(jī)系就是其中的一名 ,并地 Unix 進(jìn)行了修改增加了許多新的特點(diǎn) ,這就是主為人知的 BSC 版本的 Unix。每個(gè)人都有可以自由獲取內(nèi)核源程序 ,每個(gè)人都有要不得以運(yùn)載源程序加以修改 ,而后他人也可以自由獲取你修改后的源程序。所以,采用客戶 /服務(wù)器模型進(jìn)行網(wǎng)絡(luò)聊天需要分別編寫(xiě)服務(wù)器端和客戶端的程序,服務(wù)器和客戶端之間相互通信的同步關(guān)系和 各自的程序流程如實(shí)驗(yàn)圖 13 所示。當(dāng)給某人打電話時(shí) , 撥叫的是對(duì)方用戶的電話號(hào)碼。 3 Socket 通信過(guò)程與程序開(kāi)發(fā) Socket 通信過(guò)程 基于 TCP 可靠連接的客戶與服務(wù)器連接進(jìn)程流程圖如圖 2。 / 系統(tǒng)隨機(jī)選擇一個(gè)未被 使用的端口號(hào) /=INADDR_ANY。 backlog 對(duì)隊(duì)列中等待服務(wù)的請(qǐng)求的 數(shù)目進(jìn)行了限制 , 對(duì)于小型服務(wù)器 , 隊(duì)列長(zhǎng)度應(yīng)該為 5 或是稍大一些的值 , 而對(duì)于網(wǎng)站服務(wù)器 , 我們就需要更大的值 , 比如說(shuō) 16 或是更大。所以需要對(duì) send()的返回值進(jìn)行測(cè)量。 多線程的概念 上述點(diǎn)對(duì)點(diǎn)通信的實(shí)現(xiàn)知識(shí)完成了主機(jī)進(jìn)程與服務(wù)器進(jìn)程之間的連接,建立連接的進(jìn)程之間是一對(duì)一的聯(lián)系,即主機(jī)的一個(gè)進(jìn)程與服務(wù)器的一個(gè)進(jìn)程之間建立的連接。 Type : 網(wǎng)絡(luò) 程 序 所采 用 的通 信 協(xié)議 , 可 以取 SOCK_STREAM 或SOCK_DGRAM。 參數(shù)作用: Sockfd:表示 socket 的文件描述符。my_addr,sizeof(stuct sockaddr))。 close(sockfd)。 exit(1)。 if(send(new_fd,msg,strlen(msg),0) == 1){ perror(send)。 if(strcmp(buf,exit) == 0){ printf(Server is closed\n)。(),8)。 } 4 運(yùn)行效果 程序測(cè)試環(huán)境: linux、 unix、 debian 等操作系統(tǒng)。 圖 42 客戶端窗口 上述運(yùn)行結(jié)果表明,客戶端與服務(wù)器端之間傳遞的消息已被對(duì)方成功接收。 } if(strcmp(msg,exit) == 0){ printf(Byebye!\n)。 } = AF_INET。 if((numbytes = recv(sockfd,buf,MAXDATASIZE,0)) == 1){ perror(recv)。accthread,NULL,(void *)acceptconnect,NULL)) != 0){ printf(Create thread error!\r\n)。recthread,NULL,(void *)recmessage,NULL))!= 0){ printf(Create thread error!\r\n)。 } buf[numbytes] = 39。 =AF_INET。 Addr:表示指向局部的數(shù)據(jù)結(jié)構(gòu) struct sockaddrin 的指針。 3 系統(tǒng)實(shí)現(xiàn) Linux 提供的有關(guān) Socket 的系統(tǒng)調(diào)用 (1) Socket() 作用: socket 函數(shù)為客戶機(jī)或服務(wù)器創(chuàng)建一個(gè) sokcet 格式: int socket(int family,int type,int protocol)。 2 Socket 使用 Socket 接口進(jìn)行網(wǎng)絡(luò)通信的過(guò)程如圖 13 所示,簡(jiǎn)要步驟如下: (1) 建立一個(gè) Socket. (2) 按要求配置 socket,將 socket 連接到遠(yuǎn)程主機(jī)或給 socket 指定以各本地協(xié)議端口。 sockfd 是想用來(lái)傳輸數(shù)據(jù)的 socket 描述符 , msg是一個(gè)指向要發(fā)送數(shù)據(jù) ( 可以是字符型、整型、浮點(diǎn)型等 ) 的指針。 ( 4) 步驟 4: 監(jiān)聽(tīng)連接 listen()在服務(wù)器端程序中 , 當(dāng) socket 與某一端口捆綁以后 , 就需要監(jiān)聽(tīng)該端口 , 以便對(duì)到達(dá)的服務(wù)請(qǐng)求加以處理。 int bind ( int sockfd, struct sockaddr _my_addr, int addrlen) 。數(shù)據(jù)報(bào)套接字 (Datagram Socket) : TCP /IP 協(xié)議族中的 UDP 協(xié)議使用此類接口 , 它是無(wú)連接的服務(wù) ,數(shù)據(jù)通過(guò)相互獨(dú)立的報(bào)文進(jìn)行傳輸 , 提供了一個(gè)無(wú)連接服務(wù)。雙方 的通信與通信的兩個(gè)端點(diǎn)和他們之間的通信線路有關(guān)。 兩個(gè)計(jì)算機(jī)之間如果使用 TCP 通信,其連接過(guò)程需要三次握手實(shí)現(xiàn),如實(shí)驗(yàn)圖 11 所示。 Linux 的企業(yè)級(jí)特性 ,比如支持多處理器、支持大型文件系統(tǒng)、日志文件系統(tǒng)以及密集型計(jì)算和高可用性集群技術(shù) ,也逐步成熟。通過(guò)這種方式 ,GPL 保證了 Linux(以及同一許可證下的大量其他軟件)不僅現(xiàn)在自由可用 ,而且皮后經(jīng)過(guò)任何修改這后都仍然可以自由使用。 Linus Torvald 和其它的遍布世界各地的編程人員共同開(kāi)發(fā)的。他獨(dú)立把這個(gè)內(nèi)核開(kāi)發(fā)到 版 ,這個(gè)版本已經(jīng)可以運(yùn)行g(shù)cc、 bash 和很少的一些應(yīng)用程序。它是以中午連接的邏輯通信信道。在應(yīng)用開(kāi)發(fā)中就像使用文件句柄一樣 , 可以對(duì)Socket 句柄進(jìn)行讀、寫(xiě)操作。在Linux 中 , 套接字接口是應(yīng)用程序訪問(wèn)下層的網(wǎng)絡(luò)協(xié)議的惟一方法。 Socket 通信程序開(kāi)發(fā) 下面詳細(xì)說(shuō)明 Socket 通信程序的開(kāi)發(fā)過(guò)程 : ( 1) 步驟 1: 建立套接口 socket() int sockfd = socket ( int domain, int type, intprotocol) , 其中domain 參數(shù)指定 socket 協(xié)議族 , 包括 PF_LOACL 和 PF_INET, PF_LOACL 表示使用本地套接口 , PF_INET 表示使用 Inter 套接口。另外要注意的是 , 當(dāng)調(diào)用函數(shù)時(shí) , 一般不要將端口號(hào)置為小于 1024 的值 , 因?yàn)?1~ 1024 是保留端口號(hào) , 可以使 用大于 1024 中任何一個(gè)沒(méi)有被占用的端口號(hào)。 int accept( int sockfd, void addr, int addrlen) 。 len 是緩沖的長(zhǎng)度。這樣,當(dāng)接收信息任務(wù)因沒(méi)有信息而被阻塞時(shí),不至于影響發(fā)送任務(wù)的執(zhí)行。 (3) listen() 格式: int listen(int sockfd, int backlog)。 作用:用于流式 socket、數(shù)據(jù) 報(bào) socket 內(nèi)部之間的通信。 2)創(chuàng)建子進(jìn)程,顯
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1