南昌大学试验报告.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南昌大学实验报告 姓名:林泓宇 学号:8000115196 邮箱地址:Littlered_Lynn@ 专业班级:计科154班 实验日期:2018.5.26 课程名称:Linux程序设计 实验项目名称 Socket It Out 实验目的 The purpose of the lab • Understanding the mechanism of socket • Trying to learn some C • Understanding the process of network programming 实验基础 CentOS 6.6,Oracle VirtualBox 实验步骤 Task 1 Socket it •Program a C/S communication in one host •Echo the input from client at the server side •Using socket interface to implement such process •Make a real pair using Linux C Task 2 Easier Job on the Way •Repeat the task in the last slide, using Golang 实验数据或结果 首先将老师给出的代码复制过来,写成C文件 编译两个文件,会发现报出大量错误,这里首要问题就是没有csapp.h这个文件,并 且老师的实验要求中也没有给出,所以只能自行到网上下载,下载之后解压,发现还有 一个捆绑的文件csapp.c ,并且在这个csapp.h的头文件中,包含了老师在实验介 绍中提到的一些函数,说明了这个头文件的正确性 再次编译,还是报错,提示没有这个头文件,原来是我自己手贱把 #include csapp.h 改成了 #include 这样会导致一个什么样的情况了,就是这个程序会到系统的头文件库里去找这 个csapp.h ,这个库位于/usr/include之下,这里就直接改回来便可,程序会自动寻 找当前目录下的对应头文件来进行引用 然后进行编译,可以看到,头文件的问题已经没有了,但是又出现了新的问题,提示线 程相关的错误,这个错误我到网上去查了一下,是因为本程序中含有线程相关的语句, 在编译的时候需要在后面加上一条语句,成为 gcc lab6_client.c -o client -lpthread 这样的形式 再看服务器端的代码,也是报错,这里错误很愚蠢,是因为复制过来的代码出现了一些 格式问题,自动换了行,编译器没能识别出来,退格还原就可以了 这里继续报错,说是没有定义echo这个方法,我找了一下老师给的实验需求,发现给 出了这个echo函数,复制过来进行定义,就可以通过编译了 打开两个终端,一个终端运行服务端,一个终端运行客户端,可以看到,已经成功建立 连接,并且可以传输数据,但是这个运行结果并不美观,跟老师给的要求也不太一样: 1. 客户端输入了信息,会自动重复输出一遍用户的输入 2. 服务器端不能显示用户输入信息的内容,只是给出一个信息大小 要解决这两个问题,我首先仔细阅读了一下源程序,发现了 Fputs(buf,stdout) 这条语句就是导致重复输出一遍用户输入的始作俑者,于是把它注释掉 同时,我在服务器端文件找到输出客户端传过来信息大小的部分,在里面加上一句 printf(%s\n,buf) 其中buf就是客户端输入的文字内容,这样就解决了上述两个问题了 重新运行,发现结果和预计的一样 接下来就是使用Golang语言完成Socket编程了,关于这个任务,我在网上查阅了 一些资料,最后决定参考golang socket 服务端与客户端内的写法。 但是这位兄贵的程序中,是由程序预先在客户端输入内容进行传送,并且只能传送 一次数据,所以并不符合老师的要求,但是他的服务端和客户端的连接创建是非常 清晰且正确的,所以应用过来,自己修改了一些部分,代码如下,这里我的主要思 想就是实现一个简单的函数嵌套调用,在连接建立函数中设置一个send函数,这 个send函数就由用户端自己输入内容,而在main函数中,不停的循环传送数据, 并设置一个flag变量来确定是否结束循环 最后是运行结果,由此可见结果是正确的 实验思考 这次的实验是做socket有关的编程,分为服务端和用户端两个方面进行,在实验过程 中遇到了很多问题,但都通过询问老师和查询资料得以解决,这次的实验不

文档评论(0)

136****3783 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档