版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统课程设计任务书学院计算机与信息工程学院专业网络工程课程名称操作系统题目进程通信完成期限2021年6月3日-2021年6月30日共4周内容及任务工程的目的实现一个简单的聊天程序工程任务的主要内容和要求〔1〕根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与效劳器两局部。〔2〕按照要求撰写课程设计报告。三、工程设计〔研究〕思路分析课题要求、了解进程通信原理、设计通信界面、编写代码。四、具体成果形式和要求可以在一个计算机上通信,也可以在两个计算机上通信。进度安排起止日期工作内容分析课题要求,找出解决方案根据方案了解通信原理,对课题进行设计根据设计分析,进行代码编写和测试主要参考资料[1]赵生慧.Java面向对象程序设计〔第二版〕[M].北京:中国水利水电出版社,2021.[2](美)卡尔弗特,多纳霍,周恒民译.JavaTCP\IPSocket编程(原书第2版)[M].北京:机械工业出版社,2021.指导教师意见〔签字〕:年月日系〔教研室〕主任意见〔签字〕:年月日操作系统课程设计说明书学院名称:计算机与信息工程学院班级名称:网络工程113班学生姓名:柯焱芳谢娟娟刘瑶靳梦婷束道华学号:20212113842021211419202121139120212113832021211404题目:进程通信指导教师姓名:王汇彬起止日期:2021年6月3日-2021年6月30日第一局部:正文局部一、选题背景为了提高计算机系统的效率。增强计算机系统内各种硬件的并行操作能力。操作系统要求程序结构必须适应并发处理的需要,为此引入了进程的概念。进程是操作系统的核心,所有基于多道程序设计的操作系统都建立在进程的概念之上。目前的计算机系统均提供了多任务并行环境。无论是应用程序还是系统程序,都需要针对每一个任务创立相应的进程。进程是设计和分析操作系统的有力工具。然而不同的进程之间,即使是具有家族联系的父子进程,都具有各自不同的进程映像。由于不同的进程运行在各自不同的内存空间中,一方对于变量的修改另一方是无法感知的。因此,进程之间的信息传递不可能通过变量或其它数据结构直接进行,只能通过进程间通信来完成。要实现实现进程通信有多种方法,在课程设计中,使用Socket通信方式进行通信,实现两台计算机之间的进程通信。二、设计理念课程设计要求根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与效劳器两局部。首先要满足在同一个计算机上可以进行通信,在这个根底上可以实现一对一两台计算机之间的通信。2.1整体设计需求分析根据课题要求:根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与效劳器两局部。要选择适宜的通信方式能够使客户端和器端断建立连接,聊天就需要有聊天界面,使用户可以通过界面进行通信。2.2效劳器端需求分析效劳器端需要建立一个端口提供应客户端监听,在建立端口后不断进行监听是否有客户端连接或者断开连接,假设有客户端监听其端口,便建立连接进行通信。要使用Java设计编程实现聊天界面,当有客户端进行连接之后,显示是哪一台计算机与效劳器端进行连接通信。2.3客户端需求分析客户端应该完成的工作包括:=1\*GB2⑴与效劳器端建立通信通道,向效劳器端发送信息。=2\*GB2⑵接收来自效劳器的信息。2.4聊天界面需求分析聊天界面首先显示是效劳器端还是客户端,聊天界面中要有输入文本域,在文本域中可以显示当前输入端聊天内容,在文本域下端有文本框,可以显示效劳器与客户只见到聊天记录。三、过程论述3.1进程通信方式及Socket通信原理进程通信的方进程通信的管道、消息、Socket、共享内存、文件、信号等。本次课程设计使用的Socket通信方式。Socket用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在Windows系统中,Socket称为winsock。其有两个根本概念:客户端和效劳端。当两个应用之间需要采用Socket通信时,首先需要在两个应用之间〔可能位于同一台机器,也可能位于不同的机器〕建立Socket连接,发起呼叫连接请求的一方为客户端,接受呼叫连接请求的一方成为效劳端。客户端和效劳端是相对的,同一个应用可以是客户端,也可以是效劳端。在客户端呼叫连接请求之前,它必须知道效劳端在哪里。所以需要知道效劳端所在机器的IP地址或机器名称,如果客户端和效劳端事前有一个约定就好了,这个约定就是PORT〔端口号〕。也就是说,客户端可以通过效劳端所在机器的IP地址或机器名称和端口号唯一确实定方式来呼叫效劳端。在客户端呼叫之前,效劳端必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,效劳端可以根据情况建立或拒绝连接。连接方式有两种,同步方式〔Blocking〕和(noBlocking).客户端发送的消息可以是文本,也可以是二进制信息流。当客户方的消息到达效劳方端口时,会自动触发一个事件〔event〕,效劳端只要接管该事件,就可以接受来自客户端的消息了。3.2Socket通信流程Socket通信首先在效劳器端产生serverSocket〔同时客户端产生Socket〕,等待客户端连接效劳器端端口号,假设进行连接之后,客户端与效劳器端便可进行聊天,形成数据流读在缓冲区形成数组,最终显示在文本域中,当客户端与效劳器端断开连接之后,立即退出,效劳器端继续监、等待。图3-1Socket通信活动图3.3效劳器端设计由需求分析可知,在效劳器端进行程序设计时,首先要实现效劳器端设置socket,允许客户端访问,在编程设计时要实现图形化界面设计=1\*GB2⑴设置socket语句ServerSocketserver;//生成效劳器套接字server=newServerSocket(5000);//实例化套接字端口为5000client=server.accept();//等待客户机连接ta.append("客户机是"+client.getInetAddress().getHostName()+"\n\n")//获得本机地址//获得指定的IP地址ta.append("客户机是:"+"192.168.97.85"+"\n\n");//获得请求连接效劳器的客户机的IP地址ta.append("客户机是:"+""+"\n\n");=2\*GB2⑵效劳器端程序设计Labellabel=newLabel("交谈内容");TextFieldtf=newTextField(20);//实例化文本框TextAreata=newTextArea();//实例化文本域Panelpanel=newPanel();//创立面板对象ServerSocketserver;//创立效劳器套接字SocketClient;//创立客户机套接字InputStreamDataIn;//定义输入流OutputStreamDataOut;//定义输出流publicServer(){super("效劳器");setSize(300,180);//设置窗体大小panel.add(label);//在面板上添加标签panel.add(tf);//在面板上添加文本框tf.addActionListener(this);//注册add("North",panel);//在窗体上添加面板add("Center",ta);//在窗体上添加文本区addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});show();//可以提示try{server=newServerSocket(5000);Client=server.accept();//等待客户机连接ServerSocket(5000);//获得指定的IP地址//ta.append("客户机是:"+"192.168.97.85"+"\n\n");//获得请求连接效劳器的地址ta.append("客户机是:"+""+"\n\n");DataIn=Client.getInputStream();//实例化输入流DataOut=Client.getOutputStream();//实例化输出流}catch(IOExceptionioe){}//捕获异常while(true){try{bytebuff[]=newbyte[512];//缓冲数组DataIn.read(buff);//读出数组数据Stringstr=newString(buff);//接受客户端发送的数据包ta.append("客户机说:"+str+"\n");}catch(IOExceptionioe){}}}publicstaticvoidmain(Stringargs[]){newServer();//实例化Sever对象}publicvoidactionPerformed(ActionEvente)//事件监听处理程序{try{Stringstr=newString(tf.getText());//实例化字符串bytebuf[]=str.getBytes();//读出数组tf.setText("");DataOut.write(buf);ta.append("效劳器说:"+str+"\n");}catch(IOExceptionioe){}}3.4客户端设计由需求分析可知,在客户端进行程序设计时,首先要实现客户端设置socket,输入客户端IP地址,请求连接,在编程设计时要实现图形化界面设计。=1\*GB2⑴设置socket语句Socketclient;//生成客户端套接字client=newSocket("192.168.97.85",4000);//实例化客户端=2\*GB2⑵客户端程序设计Labellabel=newLabel("交谈内容");TextFieldtf=newTextField(20);//实例化文本框TextAreata=newTextArea();//实例化文本域Panelpanel=newPanel();//创立面板对象ServerSocketserver;//创立效劳器套接字SocketClient;//创立客户机套接字InputStreamDataIn;//定义输入流OutputStreamDataOut;//定义输出流publicClient(){super("客户机");setSize(300,180);panel.add(label);//在面板上添加标签panel.add(tf);//在面板上添加文本框tf.addActionListener(this);//注册add("North",panel);//在窗体上添加面板add("Center",ta);//在窗体上添加文本区addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});show();try{Client=newSocket(InetAddress.getLocalHost(),5000);ta.append(Client.getInetAddress().getHostName()+"\n\n");//ta.append("客户机是:"+"192.168.97.84"+"\n\n");DataIn=Client.getInputStream();//实例化输入流DataOut=Client.getOutputStream();//实例化输出流}catch(IOExceptionioe){}while(true){try{bytebuff[]=newbyte[512];//缓冲数组DataIn.read(buff);//读出数组数据Stringstr=newString(buff);//接受客户端发送的数据包ta.append("效劳器说:"+str+"\n");}catch(IOExceptionioe){}}}publicstaticvoidmain(Stringargs[]){newClient();}publicvoidactionPerformed(ActionEvente)//事件处理程序{try{Stringstr=newString(tf.getText());//实例化字符串bytebuf[]=str.getBytes();//字符串转换为数组存储tf.setText("");DataOut.write(buf);//在客户机中写出输出流里的数组ta.append("客户机说:"+str+"\n");//写入文本域}catch(IOExceptionioe){}//捕获异常四、结果分析本设计通过套接字来实现进程间的通信。在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/效劳器模式,即客户向效劳器发出效劳请求,效劳器收到请求后,提供相应的效劳。由此原理,便可实现进程通信功能。其中,在进程通信前,只有设置好所要进行通信的IP地址,并且要保证在效劳器成功运行之后,再运行客户机,才可进行正常通信。4.1未通信时状态只运行效劳器程序模块或者客户端程序模块时,由于效劳器并未与任何客户机之间建立联系,故无法完成通信〔如图4-1〕。图4-1未连接时状态图4.2单机测试当效劳器端和客户端在同一台计算机上运行时,socket分别得到的都是本机IP地址,也可以进行通信〔如图4-2〕。图4-2单机通信状态图4.3两台计算机间通信测试当效劳器端和客户端在不同的两台计算机上运行时,先给定客户端效劳器的IP地址,但效劳器端运行后,在运行客户端便可以进行通信〔如图4-3,图4-4〕。图4-3两台计算机通信效劳器端状态图图4-4两台计算机通信效劳器端状态图4.4错误操作在运行程序时,假设先运行客户端,那么无法进行通信〔如图4-5〕。图4-5运行出错时状态图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国硼玻璃粉数据监测研究报告
- 2025至2030年中国橡塑隔音板材数据监测研究报告
- 添加牛蒡多糖的复合型可食用膜对不同食品的保鲜作用研究
- 二零二五年度智能农业设备租赁合同范本3篇
- 二零二五年度促销员健康管理与保障合同4篇
- 二零二五年度智能家居瓷砖铺装服务合同4篇
- 2025年度个人汽车租赁及GPS定位服务合同3篇
- 桶装水企业战略合作协议(2025版)2篇
- 二零二五年度公司庆典活动创意策划与实施合同3篇
- 二零二五年度新型材料幕墙安装劳务分包合同范本4篇
- 2024公路沥青路面结构内部状况三维探地雷达快速检测规程
- 2024年高考真题-地理(河北卷) 含答案
- 中国高血压防治指南(2024年修订版)解读课件
- 2024年浙江省中考科学试卷
- 2024风力发电叶片维保作业技术规范
- 《思想道德与法治》课程教学大纲
- 2024光储充一体化系统解决方案
- 2024年全国高考新课标卷物理真题(含答案)
- 处理后事授权委托书
- 食材配送服务方案投标方案(技术方案)
- 足疗店营销策划方案
评论
0/150
提交评论