网络程序设计_代码复习

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

UDPServer#includestdio.h#includestdlib.h#includestring.h#includesys/socket.h#includenetinet/in.h#includeerrno.h#includenetdb.h#includearpa/inet.h#includeunistd.h#includeiostream#includesys/time.husingnamespacestd;intmain(intargc,char**argv){if(argc!=2){coutargumentinvalidendl;return1;}shortport=atoi(argv[1]);intsockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd==-1){coutcreatesocketerrorendl;return1;}sockaddr_inaddr;bzero(&addr,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=htonl(INADDR_ANY);//绑定服务器地址if(bind(sockfd,(structsockaddr*)&addr,sizeof(addr))==-1){coutbinderrorendl;return1;}for(;;){charbuf[32];sockaddr_inclient_addr;socklen_taddr_len;//接收客户端数据包intn=recvfrom(sockfd,buf,16,0,(structsockaddr*)&client_addr,&addr_len);if(n=0){buf[n]=0;coutrecv:bufendl;structtimevaltv;gettimeofday(&tv,NULL);sprintf(buf,%d%d,(int)tv.tv_sec,(int)tv.tv_usec);//利用recvfron中得到的地址回送数据包sendto(sockfd,buf,strlen(buf),0,(structsockaddr*)&client_addr,sizeof(client_addr));}}close(sockfd);return0;}UDPClient#includestdio.h#includestdlib.h#includestring.h#includesys/socket.h#includenetinet/in.h#includeerrno.h#includenetdb.h#includearpa/inet.h#includeunistd.h#includeiostreamusingnamespacestd;intmain(intargc,char**argv){if(argc2){coutargumentinvalidendl;return1;}shortport=atoi(argv[1]);intsockfd=socket(AF_INET,SOCK_DGRAM,0);if(sockfd==-1){coutcreatesocketerrorendl;return1;}sockaddr_inaddr;bzero(&addr,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=htonl(INADDR_ANY);if(argc==3&&strcmp(argv[2],-c)==0){//记录服务器地址connect(sockfd,(structsockaddr*)&addr,sizeof(addr));}for(inti=0;i10;i++){charbuf[16];sprintf(buf,%dhello,getpid());coutsend:bufendl;intn;if(argc==3&&strcmp(argv[2],-c)==0){//发送时不需要服务器地址n=sendto(sockfd,buf,strlen(buf),0,NULL,0);}else{//发送时需要服务器地址n=sendto(sockfd,buf,strlen(buf),0,(structsockaddr*)&addr,sizeof(addr));}n=recvfrom(sockfd,buf,16,0,NULL,NULL);if(n=0){buf[n]=0;coutrecv:bufendl;}sleep(1);}close(sockfd);return0;}TCPServer#includestdio.h#includestdlib.h#includestring.h#includesys/socket.h#includenetinet/in.h#includearpa/inet.h#includeunistd.h#includesys/types.h#defineMAXDATASIZE128#definePORT3000#defineBACKLOG5intmain(intargc,char**argv){intsockfd,new_fd,nbytes,sin_size;charbuf[MAXDATASIZE];structsockaddr_insrvaddr,clientaddr;//1.创建网络端点sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd==-1){printf(can;tcreatesocket\n);exit(1);}if(argc==2){inton=1;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));printf(reuseaddr\n);}//填充地址bzero(&srvaddr,sizeof(srvaddr));srvaddr.sin_family=AF_INET;srvaddr.sin_port=htons(PORT);srvaddr.sin_addr.s_addr=htonl(INADDR_ANY);/*if(inet_aton(argv[1],&srvaddr.sin_addr)==-1){printf(addrconverterror\n);exit(1);}*///2.绑定服务器地址和端口if(bind(sockfd,(structsockaddr*)&srvaddr,sizeof(structsockaddr))==-1){printf(binderror\n);exit(1);}//3.监听端口if(listen(sockfd,BACKLOG)==-1){printf(listenerror\n);exit(1);}for(;;){//4.接受客户端连接sin_size=sizeof(structsockaddr_in);if((new_fd=accept(sockfd,(structsockaddr*)&clientaddr,&sin_size))==-1){printf(accepterror\n);continue;}printf(clientaddr:%s%d\n,inet_ntoa(clientaddr.sin_addr),ntohs(clientaddr.sin_port));//5.接收请求nbytes=read(new_fd,buf,MAXDATASIZE);buf[nbytes]='\0';printf(client:%s\n,buf);//6.回送响应sprintf(buf,wellcome!);write(new_fd,buf,strlen(buf));//关闭socketclose(new_fd);}close(sockfd);return0;}TCPClient#includestdio.h#includestdlib.h#includestring.h#includesys/socket.h#includenetinet/in.h#includeerrno.h#includenetdb.h#includearpa/inet.h#includeunistd.h#defineMAXDATASIZE128#definePORT3000intaddr_conv(char*address,structin_addr*inaddr);intmain(intargc,char**argv){intsockfd,nbytes;charbuf[MAXDATASIZE];structsockaddr_insrvaddr;if(argc!=2){printf(usage:./clienthostname|ip\n);exit(0);}//1.创建网络端点sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd==-1){printf(can;tcreatesocket\n);exit(1);}//指定服务器地址(本地socket地址采用默认值)bzero(&srvaddr,sizeof(srvaddr));srvaddr.sin_family=AF_INET;srvaddr.sin_port=htons(PORT);/*if(inet_aton(127.0.0.1,&srvaddr.sin_addr)==-1){printf(addrconverterror\n);exit(1);}*/if(addr_conv(argv[1],&srvaddr.sin_addr)==-1){perror(strerror(errno));}//2.连接服务器if(connect(sockfd,(structsockaddr*)&srvaddr,sizeof(structsockaddr))==-1){printf(connecterror\n);exit(1);}//3.发送请求sprintf(buf,hello);write(sockfd,buf,strlen(buf));//4.接收响应if((nbytes=read(sockfd,buf,MAXDATASIZE))==-1){printf(readerror\n);exit(1);}buf[nbytes]='\0';printf(srvrespons:%s\n,buf);//关闭socketclose(sockfd);return0;}intaddr_conv(char*address,structin_addr*inaddr){structhostent*he;if(inet_aton(address,inaddr)==1){printf(callinet_atonsucess.\n);return0;}printf(callinet_atonfail.\n);he=gethostbyname(address);if(he!=NULL){printf(callgethostbynamesucess.\n);*inaddr=*((structin_addr*)(he-h_addr_list[0]));return0;}return-1;}UNIXIPCClient#includeiostream#includesys/types.h#includesys/socket.h#includearpa/inet.h#includenetinet/in.h#includeun

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功