实验9UNIX Socket编程_Password_Removed.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:7 大小:69KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验9UNIX Socket编程_Password_Removed.pdf

实验9UNIXSocket编程_Password_Removed.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验9:UNIXSocket编程1、实验目的(1)掌握UNIXSocket工作机制和程序设计方法;(2)掌握UINIX环境C/S、C/M/S结构与工作模式;(3)掌握服务器程序的设计方法;(4)掌握C/S结构程序的设计方法;(5)了解与通过相关文件/etc/hosts,/etc/services,/etc/network。2、实现设备一台装有Windows操作系统和Linux机系统的微机或服务器。3、实验方法与注意事项实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在自己的家目录内容以自己(拼音)名字或学号,创建一个子目录(已有者可以不再创建)。以后所有工作都要在自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。用户要按通常实验要认真书写实验报告。4、实验过程示例1:客户端程序设计#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#definerec_length20main(intargc,char**argv){structhostent*hp;structsockaddr_insin;structservent*sp;charbuf[50];ints,pid;char*service,*dest;if(argc!=1){service=argv[1];dest=argv[2];}else{fprintf(stderr,"NOserviceassigned!\nUsage:");fprintf(stderr,"%sservice_namedestination!\n",argv[0]);fprintf(stderr,"Note:service_nameisdefinedin/etc/services\n");fprintf(stderr,"destinationisdefinedin/etc/hosts\n");exit(-1);}if((sp=getservbyname(service,"tcp"))==NULL){fprintf(stderr,"Error:getservbyname");exit(-5);}if((hp=gethostbyname(dest))==0){fprintf(stderr,"Error:gethostbyname");exit(-6);}bzero(&sin,sizeof(sin));bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);sin.sin_family=hp->h_addrtype;sin.sin_port=sp->s_port;if((s=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Error:socket");exit(-6);}if(connect(s,&sin,sizeof(sin))==-1){fprintf(stderr,"Error:connect");close(s);exit(-6);}//next2Linebuildrequestmessagepid=getpid();sprintf(buf,"%5.5d%5.5d%5.5d%5.5d\n",pid,pid*2,pid*3,pid*4);fprintf(stderr,"%sissendingrequestmessage:%s\n",argv[0],buf);if(write(s,buf,rec_length)!=rec_length){//toserverfprintf(stderr,"WriteSocketsERROR\n!");close(s);exit(-1);}if(read(s,buf,rec_length)==0){//getreplayfromserverfprintf(stderr,"ReadSocketsError\n");close(s);exit(-2);}printf("%sgetreply:%s\n",argv[0],buf);close(s);exit(0);}示例2:服务器程序设计。#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#def