欢迎来到天天文库
浏览记录
ID:41331243
大小:2.62 MB
页数:12页
时间:2019-08-22
《Linux网络编程—单播多播与广播的实现文档编码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、盐城师范学院信息科学与技术学院实验报告课程名称Linux网络编程班级学号8姓名实验地点实验日期实验学时实验名称单播、多播与广播的实现实验类型□验证性■综合性□设计性实验目的:1.了解路由套接口编程的工作流程2.熟练掌握广播编程的工作流程与实现方法3.熟练掌握多播编程的工作流程与实现方法实验环境:(包括软件平台和硬件平台)软件平台:Linux硬件平台:PC机实验内容及步骤(含源程序)一、广播1、客户端程序#include#include#include2、.h>#include#defineBUFLEN255intmain(intargc,char**argv){structsockaddr_inlocaladdr;intsockfd,n;charmsg[BUFLEN+1];if(argc!=2){printf("usage:%s",argv[0]);exit(0);}sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"socketcreatingerroring3、b_client.c");exit(1);}memset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_port=htons(atoi(argv[1]));localaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=SO_REUSEADDR;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));if(bind(sockfd,(structsockadd4、r*)&localaddr,sizeof(structsockaddr_in))<0){fprintf(stderr,"binderroringb_client.c");exit(2);}n=read(sockfd,msg,BUFLEN);if(n==-1){fprintf(stderr,"readerroringb_client.c");exit(3);}else{msg[n]=0;printf("%s",msg);}}2、服务器端#include#include5、h>#include#include#defineBUFLEN255voidgetcurtime(char*curtime){time_ttm;time(&tm);snprintf(curtime,BUFLEN,"%s",ctime(&tm));}intmain(intargc,char**argv){structsockaddr_inpeeraddr;intsockfd,on=1;intnum,i;charmsg[BUFLEN+1];if(argc!=3){printf("6、usage:%s",argv[0]);exit(0);}sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"socketcreatingerroringb_server.c");exit(1);}setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));memset(&peeraddr,0,sizeof(structsockaddr_in));p7、eeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(0);}peeraddr.sin_port=htons(atoi(argv[2]));for(;;){getcurtime(msg);inta;a=sendto(sockfd,msg,strlen(msg),0,(structsockaddr*)&peeraddr,sizeof(structso8、ckaddr_in));printf("%d",a);fflush(stdout);sleep(3);}}二、多播1、客户端程序#include#include#include#include#define
2、.h>#include#defineBUFLEN255intmain(intargc,char**argv){structsockaddr_inlocaladdr;intsockfd,n;charmsg[BUFLEN+1];if(argc!=2){printf("usage:%s",argv[0]);exit(0);}sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"socketcreatingerroring
3、b_client.c");exit(1);}memset(&localaddr,0,sizeof(structsockaddr_in));localaddr.sin_port=htons(atoi(argv[1]));localaddr.sin_addr.s_addr=htonl(INADDR_ANY);intopt=SO_REUSEADDR;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));if(bind(sockfd,(structsockadd
4、r*)&localaddr,sizeof(structsockaddr_in))<0){fprintf(stderr,"binderroringb_client.c");exit(2);}n=read(sockfd,msg,BUFLEN);if(n==-1){fprintf(stderr,"readerroringb_client.c");exit(3);}else{msg[n]=0;printf("%s",msg);}}2、服务器端#include#include5、h>#include#include#defineBUFLEN255voidgetcurtime(char*curtime){time_ttm;time(&tm);snprintf(curtime,BUFLEN,"%s",ctime(&tm));}intmain(intargc,char**argv){structsockaddr_inpeeraddr;intsockfd,on=1;intnum,i;charmsg[BUFLEN+1];if(argc!=3){printf("6、usage:%s",argv[0]);exit(0);}sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"socketcreatingerroringb_server.c");exit(1);}setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));memset(&peeraddr,0,sizeof(structsockaddr_in));p7、eeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(0);}peeraddr.sin_port=htons(atoi(argv[2]));for(;;){getcurtime(msg);inta;a=sendto(sockfd,msg,strlen(msg),0,(structsockaddr*)&peeraddr,sizeof(structso8、ckaddr_in));printf("%d",a);fflush(stdout);sleep(3);}}二、多播1、客户端程序#include#include#include#include#define
5、h>#include#include#defineBUFLEN255voidgetcurtime(char*curtime){time_ttm;time(&tm);snprintf(curtime,BUFLEN,"%s",ctime(&tm));}intmain(intargc,char**argv){structsockaddr_inpeeraddr;intsockfd,on=1;intnum,i;charmsg[BUFLEN+1];if(argc!=3){printf("
6、usage:%s",argv[0]);exit(0);}sockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd<0){fprintf(stderr,"socketcreatingerroringb_server.c");exit(1);}setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));memset(&peeraddr,0,sizeof(structsockaddr_in));p
7、eeraddr.sin_family=AF_INET;if(inet_pton(AF_INET,argv[1],&peeraddr.sin_addr)<=0){printf("WrongdestIPaddress");exit(0);}peeraddr.sin_port=htons(atoi(argv[2]));for(;;){getcurtime(msg);inta;a=sendto(sockfd,msg,strlen(msg),0,(structsockaddr*)&peeraddr,sizeof(structso
8、ckaddr_in));printf("%d",a);fflush(stdout);sleep(3);}}二、多播1、客户端程序#include#include#include#include#define
此文档下载收益归作者所有