UDP網(wǎng)絡(luò)聊天實(shí)驗

UDP網(wǎng)絡(luò)聊天實(shí)驗

ID:47595552

大小:47.83 KB

頁數(shù):12頁

時間:2019-09-23

UDP網(wǎng)絡(luò)聊天實(shí)驗_第1頁
UDP網(wǎng)絡(luò)聊天實(shí)驗_第2頁
UDP網(wǎng)絡(luò)聊天實(shí)驗_第3頁
UDP網(wǎng)絡(luò)聊天實(shí)驗_第4頁
UDP網(wǎng)絡(luò)聊天實(shí)驗_第5頁
資源描述:

《UDP網(wǎng)絡(luò)聊天實(shí)驗》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、實(shí)用標(biāo)準(zhǔn)文檔計算機(jī)網(wǎng)絡(luò)原理實(shí)驗報告UDP網(wǎng)絡(luò)聊天程序設(shè)計班級:計算機(jī)1301班學(xué)號:1307010116姓名:席鳳凱文案大全實(shí)用標(biāo)準(zhǔn)文檔實(shí)驗五UDP網(wǎng)絡(luò)聊天程序設(shè)計一.實(shí)驗?zāi)康模壕幊淘O(shè)計基于UDP的簡單聊天室程序,實(shí)現(xiàn)服務(wù)器與客戶端之間的對話通信功能。二.實(shí)驗原理:網(wǎng)絡(luò)編程一般都是基于TCP或UDP的,一般過程如下:(1)TCP編程的服務(wù)器端與客戶端一般步驟:服務(wù)器端:1、創(chuàng)建一個socket,用函數(shù)socket();2、綁定IP地址、端口等信息到socket上,用函數(shù)bind();3、開啟監(jiān)聽,用函

2、數(shù)listen();4、接收客戶端上來的連接,用函數(shù)accept();5、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();6、關(guān)閉網(wǎng)絡(luò)連接;7、關(guān)閉監(jiān)聽;客戶端:1、創(chuàng)建一個socket,用函數(shù)socket();2、設(shè)置要連接的對方的IP地址和端口等屬性;3、連接服務(wù)器,用函數(shù)connect();4、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();5、關(guān)閉網(wǎng)絡(luò)連接;(2)UDP編程步驟如下:服務(wù)器端:1、創(chuàng)建一個socket,用函數(shù)socke

3、t();2、綁定IP地址、端口等信息到socket上,用函數(shù)bind();3、循環(huán)接收數(shù)據(jù),用函數(shù)recvfrom();4、關(guān)閉網(wǎng)絡(luò)連接;客戶端:文案大全實(shí)用標(biāo)準(zhǔn)文檔1、創(chuàng)建一個socket,用函數(shù)socket();2、設(shè)置對方的IP地址和端口等屬性;3、發(fā)送數(shù)據(jù),用函數(shù)sendto();4、關(guān)閉網(wǎng)絡(luò)連接;三.實(shí)驗內(nèi)容:編輯代碼:(1)服務(wù)器源程序:#include標(biāo)準(zhǔn)輸入輸出頭文件#include互聯(lián)網(wǎng)地址族#includeLI

4、NUX下C語言程序的INTERNET定義頭文件#include符號常量#include文件控制#include文件狀態(tài)#include基本系統(tǒng)數(shù)據(jù)類型#include套接字接口#defineLOCALPORT4567//定義本地服務(wù)器端口intmain(intargc,char*argv[]){ints,len;structsockaddr_inaddr;intaddr_len;char

5、msg[256];inti=0;//編寫一個函數(shù)用來初始化套接字和綁定套接字。//初始化套接字。socket參數(shù)第一個是網(wǎng)絡(luò)套接字族。一般都是AF_INET。//第二個參數(shù)是套接字類型。TCP的是SOCK_STREAM。//而UDP的是SOCK_DGRAM的形式。//第三個是初始化的協(xié)議。一般都是0。if((s=socket(AF_INET,SOCK_DGRAM,0))<0){perror("error");exit(1);}else{printf("socketcreated.");printf

6、("sockedid:%d",s);printf("remoteport:%d",LOCALPORT);//創(chuàng)建成功后輸出信息。文案大全實(shí)用標(biāo)準(zhǔn)文檔}len=sizeof(structsockaddr_in);bzero(&addr,sizeof(addr));addr.sin_family=AF_INET;//地址家族。addr.sin_port=htons(LOCALPORT);//端口。這個port是自己申明的變量,一般自己申明的端口號要大于1024。addr.sin_addr.s_ad

7、dr=htonl(INADDR_ANY);//地址是一個結(jié)構(gòu)體。用htonl把它轉(zhuǎn)化為網(wǎng)絡(luò)字節(jié)序。if(bind(s,(structsockaddr*)&addr,sizeof(addr))<0){perror("connect...");exit(1);}else{printf("bindok.");printf("localport:%d",LOCALPORT);}//綁定套接字。while(1){bzero(msg,sizeof(msg));len=sizeof(structsockad

8、dr_in);//因為我們是用UDP的方式。所以我們這里用recvform來接收數(shù)據(jù)。若是TCP則采用recv。//recvform的參數(shù)。第一是套接字,第二個是你要接收的字符緩沖區(qū)。//第三個是緩沖區(qū)大小。第四個是標(biāo)記我們設(shè)為0就好。//第五個參數(shù)是接收對方地址。第六個是地址長度。if((i=recvfrom(s,msg,sizeof(msg),0,(structsockaddr*)&addr,&len))==-1){printf("errorrece

當(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ò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。