欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    实验9UNIX Socket编程_Password_Removed.pdf

    • 资源ID:70333026       资源大小:69.42KB        全文页数:7页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验9UNIX Socket编程_Password_Removed.pdf

    实验 9:UNIX Socket 编程 1、实验目的、实验目的(1)掌握 UNIX Socket 工作机制和程序设计方法;(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#include#include#include#include#define rec_length 20 main(int argc,char*argv)struct hostent*hp;struct sockaddr_in sin;struct servent*sp;char buf50;int s,pid;char*service,*dest;if(argc!=1)service=argv1;dest=argv2;else fprintf(stderr,NO service assigned!nUsage:);fprintf(stderr,%s service_name destination!n,argv0);fprintf(stderr,Note:service_name is defined in/etc/servicesn);fprintf(stderr,destination is defined in/etc/hostsn);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);/next 2 Line build request message pid=getpid();sprintf(buf,%5.5d%5.5d%5.5d%5.5dn,pid,pid*2,pid*3,pid*4);fprintf(stderr,%s is sending request message:%sn,argv0,buf);if(write(s,buf,rec_length)!=rec_length)/to server fprintf(stderr,Write Socket s ERRORn!);close(s);exit(-1);if(read(s,buf,rec_length)=0)/get replay from server fprintf(stderr,Read Socket s Errorn);close(s);exit(-2);printf(%s get reply:%sn,argv0,buf);close(s);exit(0);示例 2:服务器程序设计。#include#include#include#include#include#define rec_length 20 main(int argc,char*argv)struct sockaddr_in sin;struct servent*sp;int s,ns,pid;char buf50;char*service;if(argc!=1)service=argv1;else fprintf(stderr,NO service assigned!nUsage:n);fprintf(stderr,t%s server_name!n,argv0);fprintf(stderr,Note:server_name is defined in file/etc/servicesn);exit(-1);if(sp=getservbyname(service,tcp)=NULL)fprintf(stderr,Error:getservbyname);exit(-5);if(s=socket(AF_INET,SOCK_STREAM,0)=-1)fprintf(stderr,Error:socket create);exit(-6);bzero(&sin,sizeof(sin);sin.sin_port=sp-s_port;if(bind(s,&sin,sizeof(sin)=-1)fprintf(stderr,Error:bind);close(s);exit(-6);if(listen(s,5)=-1)fprintf(stderr,Error:listen);close(s);exit(-6);while(1)fprintf(stderr,nttt Now wait connect.n);if(ns=accept(s,0,0)=-1)/wait a connection*/fprintf(stderr,error:accept);continue;if(pid=fork()=-1)/conneted,and then create child proc fprintf(stderr,server:fork error!);close(s);exit(-1);if(pid!=0)/parent proce,nothing to do,and to the next loop close(ns);wait(0);continue;if(pid=0)/entered child proccedure close(s);printf(Receive a client connect:%sn,argv1);if(read(ns,buf,rec_length)=0)fprintf(stderr,Read nothing from socket:nsn);close(ns);exit(-3);printf(%s get message from ns:%sn,argv0,buf);/request message got from the Client./I may do some Server work here./I can also ask another server serve me from a different Socket /Because I am a demo Server,I will not do that./Next 2 Line,build a replay Message buf,and write it back pid=getpid();sprintf(buf,%5.5d%5.5d%5.5d%5.5dn,pid,pid*2,pid*3,pid*4);fprintf(stderr,And,%s replay to client:%sn,argv0,buf);if(write(ns,buf,rec_length)!=rec_length)fprintf(stderr,Write socket ns error!n);close(ns);exit(-4);close(ns);exit(0);示例 3:中间件程序设计。#include#include#include#include#include#define rec_length 20 main(int argc,char*argv)/structure defined for request as a client struct hostent*hp1;struct sockaddr_in sin1;struct servent*sp1;char sbuf50;int ss,spid;char*sservice,*sdest;/structure defined for request as a server struct sockaddr_in sin;struct servent*sp;int s,ns,pid;char buf50;char*service;/test the environment parameter:lservice,dservice,server_name if(argc=4)service=argv1;sservice=argv2;sdest=argv3;else fprintf(stderr,Parameter assigned Error!nUsage:n);fprintf(stderr,t%s lservice dservice server_name!n,argv0);fprintf(stderr,Note:server_name is defined in file/etc/hostsn);fprintf(stderr,and:lservice dservice are defined in file/etc/servicesn);exit(-1);if(sp=getservbyname(service,tcp)=NULL)fprintf(stderr,Error:getservbyname);exit(-5);if(s=socket(AF_INET,SOCK_STREAM,0)=-1)fprintf(stderr,Error:socket create);exit(-6);bzero(&sin,sizeof(sin);sin.sin_port=sp-s_port;if(bind(s,&sin,sizeof(sin)=-1)fprintf(stderr,Error:bind);close(s);exit(-6);if(listen(s,5)=-1)fprintf(stderr,Error:listen);close(s);exit(-6);while(1)fprintf(stderr,nttt Now wait connect.n);if(ns=accept(s,0,0)=-1)/wait a connection*/fprintf(stderr,error:accept);continue;if(pid=fork()=-1)/conneted,and then create child proc fprintf(stderr,server:fork error!);close(s);exit(-1);if(pid!=0)/parent proce,nothing to do,and to the next loop close(ns);wait(0);continue;if(pid=0)/entered child proccedure close(s);printf(Receive a client connect:%sn,argv1);if(read(ns,buf,rec_length)=0)fprintf(stderr,Read nothing from socket:nsn);close(ns);exit(-3);printf(%s get message from ns:%sn,argv0,buf);/request message got from the Client./Begine a Connection to Server as a Client if(sp1=getservbyname(sservice,tcp)=NULL)fprintf(stderr,Error:getservbyname s1);exit(-5);if(hp1=gethostbyname(sdest)=0)fprintf(stderr,Error:gethostbyname s1);exit(-6);bzero(&sin1,sizeof(sin1);bcopy(hp1-h_addr,&sin1.sin_addr,hp1-h_length);sin1.sin_family=hp1-h_addrtype;sin1.sin_port=sp1-s_port;if(ss=socket(AF_INET,SOCK_STREAM,0)=-1)fprintf(stderr,Error:socket s1);exit(-6);if(connect(ss,&sin1,sizeof(sin1)=-1)fprintf(stderr,Error:connect s1);close(ss);exit(-6);/next 2 Line build request message spid=getpid();sprintf(sbuf,%5.5d%5.5d%5.5d%5.5d,spid,spid*2,spid*3,spid*4);fprintf(stderr,%s is sending request message:%s s1n,argv0,sbuf);if(write(ss,sbuf,rec_length)!=rec_length)/to server fprintf(stderr,Write Socket ss ERROR!s1n);close(ss);exit(-1);if(read(ss,sbuf,rec_length)=0)/from server fprintf(stderr,Read Socket ss Error!s1n);close(ss);exit(-2);printf(%s get reply:%sn,argv0,sbuf);close(ss);/End the Communication with my Server/Next 2 Line,build a replay Message buf,and write it back pid=getpid();sprintf(buf,%5.5d%5.5d%5.5d%5.5d,pid,pid*2,pid*3,pid*4);fprintf(stderr,and,send it back to client:%sn,buf);if(write(ns,buf,rec_length)!=rec_length)fprintf(stderr,Write socket ns error!n);close(ns);exit(-4);close(ns);exit(0);4、实验报告的内容与书写 以书面形式记录下你的每一步过程,包括输入、输出信息,遇到的问题和解决的办法。

    注意事项

    本文(实验9UNIX Socket编程_Password_Removed.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开