




已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精品文檔軟件1141Linux操作系統(tǒng)結(jié)業(yè)大作業(yè)題題目:基于UDP多播技術(shù)的群聊服務(wù)器及其客戶端要求:1. 運(yùn)行在Linux系統(tǒng)平臺(tái)上2. C語(yǔ)言編程3. 基于TCP/IP socket編程4. 基于UDP多播技術(shù)5. 每一個(gè)多播組成員針對(duì)多播組全體成員發(fā)送消息并接收來(lái)自每一個(gè)多播組成員的消息,至少要求三個(gè)多播組成員。6. (盡量)使用多線程技術(shù)7. 當(dāng)多個(gè)多播組成員同時(shí)發(fā)送消息時(shí)要避免沖突,保證信息的正確與不丟失。8. 第12周五上午12點(diǎn)以前交(電子版發(fā)到指定郵箱)程序源碼(加注釋)及其運(yùn)行結(jié)果截屏圖。9. 源碼及其運(yùn)行結(jié)果不得與人雷同。課程報(bào)告內(nèi)容及格式要求:2.1. 程序源碼及其簡(jiǎn)要注釋;2.2. 調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及相應(yīng)解決辦法;2.3. 總體運(yùn)行情況與結(jié)果分析討論2.4 上交結(jié)果:課程報(bào)告和程序源碼。2.1. 程序源碼及其簡(jiǎn)要注釋服務(wù)器的源代碼如下:#include #include #include #include #include #include #include #include #include#define PORT 1234#define MAXDATASIZE 100#define BUFLEN 255int main(int argc,char *argv)struct ARG *arg;struct sockaddr_in peeraddr;int sockfd,on=1;int num,i;char msgBUFLEN+1;pthread_t tid;socklen_t len;char bufMAXDATASIZE;/*要求運(yùn)行時(shí)輸入ip地址和端口號(hào)*/if(argc!=3)printf(usage:%sn,argv0);exit(0);/*套接字的設(shè)置*/sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd0)fprintf(stderr,socket creating error in );exit(1);/*設(shè)置廣播方式SO_BROADCAST */setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int);memset(&peeraddr,0,sizeof(struct sockaddr_in);peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv1,&peeraddr.sin_addr)=0)printf(Wrong dest IP addressn);exit(0);peeraddr.sin_port=htons(atoi(argv2);len=sizeof(peeraddr);/*服務(wù)器無(wú)限循環(huán)接收消息的代碼*/while(1)num = recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&peeraddr,&len);/服務(wù)器接收消息if(num0)perror(recvfrom() errorn);exit(1);bufnum=0;/設(shè)置字符串?dāng)?shù)組內(nèi)容結(jié)束/*發(fā)送客戶端傳來(lái)的消息*/sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&peeraddr,len);close(sockfd);客戶端的源代碼如下:#include #include #include #include #include #include #include #include #define PORT 1234#define MAXDATASIZE 100#define BUFLEN 255int main(int argc,char *argv)struct sockaddr_in localaddr;int sockfd,n,num;char bufMAXDATASIZE,sendbufMAXDATASIZE;pid_t pid;char msgBUFLEN+1;/*運(yùn)行客戶端時(shí)輸入端口號(hào)*/if(argc!=2)printf(usage:%sn,argv0); exit(0);/*設(shè)置套接字*/sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd0)fprintf(stderr,socket creating error in );exit(1);memset(&localaddr,0,sizeof(struct sockaddr_in);/*設(shè)置端口號(hào)*/localaddr.sin_port=htons(atoi(argv1);localaddr.sin_addr.s_addr=htonl(INADDR_ANY);int opt=SO_REUSEADDR;/*設(shè)置套接字選項(xiàng)為SO_REUSEADDR ,讓端口釋放后可立即使用*/setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt);if(bind(sockfd,(struct sockaddr *)&localaddr,sizeof(struct sockaddr_in)0)fprintf(stderr,bind error in );exit(2);/*客戶端無(wú)限循環(huán)發(fā)送消息并接收消息,當(dāng)用戶輸入Exit的時(shí)候退出。但是這里有一點(diǎn)沒(méi)做好,就是客戶端必須先發(fā)送才能接收,我在使用多線程的過(guò)程中遇到了困難*/while(1)/*提示輸入消息,5秒后發(fā)送給服務(wù)器*/printf(send your message:(send Exit exit);scanf(%s,sendbuf);sleep(5);sendto(sockfd,sendbuf,strlen(sendbuf),0,(struct sockaddr *)&localaddr,sizeof(localaddr);socklen_t len;len=sizeof(localaddr);while(1) /*接收服務(wù)器廣播的消息*/if(num=recvfrom(sockfd,buf,MAXDATASIZE,0,(struct sockaddr *)&localaddr,&len)=-1)printf(recvfrom() errorn);exit(1);bufnum=0;printf(Recive Message:%s.n,buf);sleep(2);break;/*比較用戶輸入的消息與”Exit是否一樣,一樣就break退出”*/if(strcmp(buf,Exit)=0)break;close(sockfd);顯示如下圖1:圖1評(píng)分標(biāo)準(zhǔn):i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 4.1.1 人的生殖-2024-2025學(xué)年七年級(jí)生物下冊(cè)同步教學(xué)課件(人教版2024)
- 2025解除勞動(dòng)合同協(xié)議書樣本
- 檔案室管理制度
- 2025年教師節(jié)系列活動(dòng)方案
- 票據(jù)質(zhì)押質(zhì)權(quán)的實(shí)現(xiàn)
- 二手房出售委托協(xié)議書二零二五年
- 中間人傭金合同
- 2025次季度虛擬現(xiàn)實(shí)空間財(cái)產(chǎn)離婚評(píng)估分割標(biāo)準(zhǔn)
- 房屋租賃和房地產(chǎn)買賣合同
- 知識(shí)產(chǎn)權(quán)許可使用合同范例
- 優(yōu)秀員工榮譽(yù)證書模板
- 金蝶PLM詳細(xì)介紹
- 礦井維修電工技能鑒定考試題(高級(jí)工)
- 湖南文藝出版社小學(xué)六年級(jí)下冊(cè)音樂(lè)全冊(cè)教案
- 高中語(yǔ)文《祝?!贰罢l(shuí)是兇手”系列之祥林嫂死亡事件《祝福》探究式學(xué)習(xí)(教學(xué)課件) 課件
- 電子商務(wù)稅收法律問(wèn)題
- 水平泵房水泵聯(lián)合試運(yùn)轉(zhuǎn)方案及安全技術(shù)措施
- 中國(guó)十大階層的劃分課件
- 中考數(shù)學(xué)分式與分式方程計(jì)算題(附答案)
- 了凡四訓(xùn)-徐韻發(fā)(課堂PPT)
- 中國(guó)政法大學(xué)社會(huì)主義市場(chǎng)經(jīng)濟(jì)概論重點(diǎn)歸納及復(fù)習(xí)試題(楊干忠版)
評(píng)論
0/150
提交評(píng)論