- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
. . .. . .
. 专业 专注 .
嵌入式实验报告
班级:14级移动一班
学号:1415925655
姓名:蒋浩
题目:
一:实现三个客户端,分别简称客户端1,客户端2,客户端3.....
客户端1实现向服务器发送字符串“name”
客户端2实现向服务器发送字符串“class”
客户端3实现向服务器发送字符串“id”
实现一个服务器程序,要求该服务器程序采用并发机制处理客户端发送过来的数据,具 体要求如下:
服务器收到客户端1发送的字符串“name”后,给客户端1回复“蒋浩”
服务器收到客户端2发送的字符串“class”后,给客户端2回复“14级移动一班”
服务器收到客户端2发送的字符串“id”后,给客户端2回复“1415925655”
二:三个客户端分别收到服务器回复的数据后完成以下操作:
1:客户端1把服务器回复的数据“蒋浩”传递给客户端2,然后等待客户端2发送信 号SIGUSR1,如果客户端1收到该信号,则客户端1打印“client over”字符串后结束
2:客户端2收到客户端1的数据后,给客户端1发送信号SIGUSR1,然后,客户端2把 字符串“蒋浩-14级移动一班1415925655”发送给客户端3,发送成功后结束。
3:客户端3收到数据后把字符串“蒋浩-14级移动一班1415925655”写入到文件蒋浩-14级移动一班1415925655.txt文件中
思路:
(1):客户端与服务器间通信:
程序通过socket编程实现,socket是在用户应用层和 TCP/IP协议通信层间的封装接口,简化操作,让用户通过socket来实现
2层间的操作,组织数据 。
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。
在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。
客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
Linux网络通信通过套接字来进行编程的.程序通过socket和其它几个API的调用,会返回一个 通讯的文件描述符也就是socket,我们可以将这个描述符看成普通的文件的描述符来操作,这就是linux的设备无关性的好处我们可以通过向描述符读写操作实现网络之间的数据交流.
(2):客户端之间通信
两个客户端之间通信使用有名管道通信,管道通信是一个进程打开写端,一个进程打开读端,然后才可以进行通信。如果只打开有名管道的一端系统则会阻塞打开进程,知道有另外一个进程打开该管道的另一端,当前进程继续执行;
客户端1把服务器回复的数据名字传递给客户端2,等待接受客户端2发送的信号,如果客户端1收到信号则结束,客户端1是以只读方式打开管道,然后写入管道,客户端2以写的方式打开管道,接收到信息,然后客户端2以kill命令发送信号kill(pid,SIGUSR1以告诉客户端1打印结束命令;
客户端2收到客户端1的数据后,给客户端1发送“SIGUSR1”信号,然后,客户端2把字符串姓名和学号发送给客户端3,发送成功后结束,客户端2和3之间的通信仍然是管道通信,由于客户端3还要将收到的信息存入文本文件,所以客户端3以读写的方式打开管道进行通信open;最后客户端3将信息写入到文本文件使用:write
原理:
首先知道有三个客户端,一个服务器,所以服务器要采用并发式服务器才能接受多个客户端的连接请求
服务器设计思路:
命令行参数设计
为了动态在命令行参数中输入端口,但命令行参数是字符串,端口是int型,所以要转化一下
Int main(int argc,char * argv)
{
}
Main()函数设计
一个结构体存储客户端的信息
Struct user
{
Char[20] name;//客户端名称
Char[100] message;//客户端发送的消息
Int fd;//客户端的套接字文件描述符
}
由于要同时处理多个连接请求的服务器程序,该程序定义一个int client[3];用来存储客户端连接的套接字描述符数组,初始化客户端连接描述符的值都为-1,代表空闲,当一个客户端的发送连接请求时,从client[]数组中找到一个值为-1(空闲)的来处理该客户端的连接请求
While()
{
Clien
您可能关注的文档
- (省电大,新为)工程建设监理概论复习试题和答案.doc
- 《王羲之圣教序笔画起笔规律分析》下载.doc
- 《影响化学反应速率的因素》教学设计说明.doc
- 《应用计算方法教程》大作业.doc
- 5DGBC50龙门立式加工中心检验规范标准.doc
- 5句子成分句子结构(老师版).doc
- 5上unit7atweekends教案设计说明.doc
- 14年高考英语听说考试真题B录音原文与参考答案.doc
- 15春学期《现代项目管理与评估》在线作业答案100.doc
- 2011年11月人力资源管理师二级真题版.doc
- 第二小组等级量表汇报NEW.pptx
- Book I Lesson 7 高等教育高等教育.ppt
- Book I Lesson 4 The Trial That Rocked the World 高等教育高等教育.ppt
- 第四章 生物信息的传递(下).ppt
- 15 常用工具软件和生物信息学资源.ppt
- 第四小组文献汇报.pptx
- Book I Lesson 6 Mark Twain-Mirror of America 高等教育高等教育.ppt
- 第三小组(作品分析)NEW .pptx
- 上海市智能数字化社区建设路径研究—以北新泾街道为例.doc
- 2025年潍坊工程职业学院单招职业适应性考试题库标准卷.docx
文档评论(0)