基于udp多播聊天室

基于udp多播聊天室

ID:11758747

大?。?94.50 KB

頁數(shù):11頁

時間:2018-07-13

基于udp多播聊天室_第1頁
基于udp多播聊天室_第2頁
基于udp多播聊天室_第3頁
基于udp多播聊天室_第4頁
基于udp多播聊天室_第5頁
資源描述:

《基于udp多播聊天室》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、1設(shè)計題目基于UDP多播技術(shù)的群聊服務器及其客戶端2開發(fā)環(huán)境C語言,Linux3設(shè)計要求1.運行在Linux系統(tǒng)平臺上2.C語言編程3.基于TCP/IPsocket編程4.基于UDP多播技術(shù)5.每一個多播組成員針對多播組全體成員發(fā)送消息并接收來自每一個多播組成員的消息6.(盡量)使用多線程技術(shù)7.當多個多播組成員同時發(fā)送消息時要避免沖突,保證信息的正確與不丟失。4流程圖客戶端和服務器程序運行的流程圖如下:其中每個客戶端都是如此同服務器端進行通訊的。戶數(shù)據(jù)處理客到客戶數(shù)據(jù)阻塞直到接收數(shù)據(jù)應答數(shù)據(jù)請求5詳細設(shè)計1.。2.關(guān)于server端的設(shè)計步驟如下:(1)初始化本地(server)的套接字

2、地址結(jié)構(gòu)localaddrmemset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_family=AF_INET;localaddr.sin_port=htons(atoi(argv[2]));localaddr.sin_addr.s_addr=htonl(INADDR_ANY);//設(shè)置端口重用intopt=SO_REUSEADDR;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));(2)為套接字綁定本地地址協(xié)議if(bind(sockfd,(struct

3、sockaddr*)&localaddr,sizeof(localaddr))==-1){perror("[Bind()error.]");exit(1);}(3)初始化組播的套接字地址結(jié)構(gòu)memset(&peeraddr,0,sizeof(structsockaddr_in));peeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("[WrongmulticastIPaddress]");exit(0);}peeraddr.sin_port=htons(atoi(

4、argv[2]));(4)sever端處理接收數(shù)據(jù)while(1){memset(msg,0,255);//printf("%s%dttttt%d",msg,a++,(strlen(msg)-1));if(read(sockfd,msg,255,0)<=0){perror("read:");exit(1);}if((strlen(msg)-1)>0){printf("[-fromClient-]%s",msg);printf("

5、--------------------------------------------------------------------

6、"

7、);if((num=sendto(sockfd,msg,3,0,(structsockaddr*)&peeraddr,sizeof(structsockaddr_in)))==-1){perror("[childprocess-----sendto]");exit(1);}}}}1.關(guān)于client端的設(shè)計步驟如下:(1)初始化本地的套接字地址結(jié)構(gòu)memset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_port=htons(atoi(argv[2]));localaddr.sin_addr.s_addr=htonl(IN

8、ADDR_ANY);(2)初始化加入組播的結(jié)構(gòu)體if(inet_pton(AF_INET,"172.17.20.251",&mcaddr.imr_interface)<=0)//此處輸入本機IP,為組播的結(jié)構(gòu)體初始化本機ip,以加入組播{perror("[MCAddrIp---failure]");exit(0);}if(inet_pton(AF_INET,argv[1],&mcaddr.imr_multiaddr)<=0){printf("[WrongmulticastIPaddress]");exit(0);}//printf("ip:%s",inet_ntoa(mcaddr.

9、imr_multiaddr));fflush(stdout);//刷新輸出緩沖區(qū)(3)加入多播組if(setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mcaddr,sizeof(structip_mreq))<0){perror("[setsockopterror---joinmulticastfailed]");exit(4);}//設(shè)置端口重用intopt=SO_R

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。