linux实验二实验报告.docx
《linux实验二实验报告.docx》由会员分享,可在线阅读,更多相关《linux实验二实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
linux实验二实验报告
深圳大学实验报告
课程名称:
Linux系统编程
实验项目名称:
进程间通信
学院:
计算机与软件学院
专业:
软件工程
指导教师:
冯禹洪
报告人:
程照原学号2011150216班级:
2
实验时间:
2014/5/23
实验报告提交时间:
教务处制
一、实验目标:
1.掌握管道/命名管道的作用及其在编程中的作用
2.掌握信号的作用及其在编程中的应用
3.掌握客户端-服务器架构及其编程实现
4.感受C库函数的实现与系统调用之间的关系
二、实验环境与工件
1.湖边Linux实验室
2.Fedora13
三、实验内容与步骤
客户端-服务器架构是常用的网络编程架构。
使用我们现学的知识一个简单的客户端服务器可以描绘如图1。
图1.客户端-服务器用FIFO进行通信
其中,服务器(Server)端的功能描述如下:
●后台进程
●从命名管道中读取客户端的请求
●计算结果并将其写到客户端的命名管道
客户端(Client)的功能描述如下:
●通过服务器命名管道发送请求到服务器
●通过自己的命名管道读取服务器消息然后退出
用到的通信机制FIFO和信号处理。
图2是客户端发送给服务器的请求的消息格式,图3是客户端的实现代码,图4是服务器端的实现代码。
图2.客户端发送给服务器的请求的消息格式
图3.client.c的实现
图4.calcserver.c的实现
1、请分析Server与Client的行为以及他们之间的交互,附上相应的运行结果。
运行流程见图5。
另外,并用命令显示公共FIFO相关的信息并解释特征字段含义;(20分)
图5.客户端-服务器的执行
2.请在你的主目录如/home/szu下创建目录,以你的姓名学号命名,例如zhangsan123456,在目录zhangsan123456下建子文件chatapplication,在chatapplication下建data,最后在data下分别建立server_fifo,client_fifo,
请将公共命名管道设置为
/home/szu/zhangsan123456/chatapplication/data/server_fifo/chat_server_fifo
请将私有命名管道设置为
/home/szu/zhangsan123456/chatapplication/data/client_fifo/chat_client$PID_fifo,其中,$PID请用客户端进程id取代
作这样的修改后,以上程序将报错。
请结合题干文件”GDB的使用.ppt”和“用GDB调试多进程程序.jpg”,使用GDB定位出错代码行和修正代码。
请截图演示关键调试步骤、出错代码和修正代码段。
(40分)
由代码可看出,read(my_fifo,buffer,BUFF_SZ)有错误,细查可看出这是离出错最后一次调用mypipename,所以错误应该出在这里。
继续检查info结构的定义发现my_fifo空间只有50个字节,而路径名使其溢出了,所以导致strcpy出错。
将50改为100后成功运行。
3.修改源程序,实现两个Client之间的通信通过Server来传递消息的功能。
请用文字描述你要实现的通信,相应的数据结构说明,并附上相应的代码及运行结果截图。
(40分)
四、实验结果
五、实验总结与体会
指导教师批阅意见:
成绩评定:
指导教师签字:
年月日
备注: