




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统课程设计 操作系统课程设计任务书 学 院计算机与信息工程学院专 业网络工程课程名称操作系统题 目进程通信完成期限2013年6月3日-2013年6月30日共4周内容及任务1、 项目的目的实现一个简单的聊天程序2、 项目任务的主要内容和要求(1)根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与服务器两部分。(2)按照要求撰写课程设计报告。三、项目设计(研究)思路分析课题要求、了解进程通信原理、设计通信界面、编写代码。四、具体成果形式和要求可以在一个计算机上通信,也可以在两个计算机上通信。进度安排 起止日期工作内容2013.6.3-2013.6.5分析课题要求,找出解决方案2013.6.6-2013.6.25根据方案了解通信原理,对课题进行设计2013.6.25-2013.6.30根据设计分析,进行代码编写和测试 主要参考资料1赵生慧. Java面向对象程序设计(第二版)M.北京:中国水利水电出版社,2010.2(美)卡尔弗特,多纳霍,周恒民译. Java TCPIP Socket编程(原书第2版)M.北京:机械工业出版社,2011.指导教师意见(签字): 年 月 日系(教研室)主任意见(签字): 年 月 日 操作系统课程设计说明书 学院名称: 计算机与信息工程学院 班级名称: 网络工程113班 学生姓名: 柯焱芳 谢娟娟 刘瑶 靳梦婷 束道华 学 号: 2011211384 2011211419 2011211391 2011211383 2011211404 题 目: 进程通信 指导教师 姓 名: 王汇彬 起止日期: 2013年6月3日-2013年6月30日 第一部分:正文部分一、选题背景为了提高计算机系统的效率。增强计算机系统内各种硬件的并行操作能力。操作系统要求程序结构必须适应并发处理的需要,为此引入了进程的概念。进程是操作系统的核心,所有基于多道程序设计的操作系统都建立在进程的概念之上。目前的计算机系统均提供了多任务并行环境。无论是应用程序还是系统程序,都需要针对每一个任务创建相应的进程。进程是设计和分析操作系统的有力工具。然而不同的进程之间,即使是具有家族联系的父子进程,都具有各自不同的进程映像。由于不同的进程运行在各自不同的内存空间中,一方对于变量的修改另一方是无法感知的。因此,进程之间的信息传递不可能通过变量或其它数据结构直接进行,只能通过进程间通信来完成。要实现实现进程通信有多种方法,在课程设计中,使用Socket通信方式进行通信,实现两台计算机之间的进程通信。 二、设计理念课程设计要求根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与服务器两部分。首先要满足在同一个计算机上可以进行通信,在这个基础上可以实现一对一两台计算机之间的通信。2.1整体设计需求分析根据课题要求:根据进程通信的方式和类型,以及进程通信的实现方法,实现一个简单的聊天程序,聊天程序包括客户端与服务器两部分。要选择合适的通信方式能够使客户端和器端断建立连接,聊天就需要有聊天界面,使用户可以通过界面进行通信。2.2服务器端需求分析服务器端需要建立一个端口提供给客户端监听,在建立端口后不断进行监听是否有客户端连接或者断开连接,若有客户端监听其端口,便建立连接进行通信。要使用Java设计编程实现聊天界面,当有客户端进行连接之后,显示是哪一台计算机与服务器端进行连接通信。2.3客户端需求分析客户端应该完成的工作包括: 与服务器端建立通信通道,向服务器端发送信息。 接收来自服务器的信息。2.4聊天界面需求分析聊天界面首先显示是服务器端还是客户端,聊天界面中要有输入文本域,在文本域中可以显示当前输入端聊天内容,在文本域下端有文本框,可以显示服务器与客户只见到聊天记录。三、过程论述3.1进程通信方式及Socket通信原理进程通信的方进程通信的管道、消息、Socket 、共享内存、文件、信号等。本次课程设计使用的Socket通信方式。Socket用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在Windows系统中,Socket称为winsock。其有两个基本概念:客户端和服务端。当两个应用之间需要采用Socket通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立Socket连接,发起呼叫连接请求的一方为客户端,接受呼叫连接请求的一方成为服务端。客户端和服务端是相对的,同一个应用可以是客户端,也可以是服务端。在客户端呼叫连接请求之前,它必须知道服务端在哪里。所以需要知道服务端所在机器的IP地址或机器名称,如果客户端和服务端事前有一个约定就好了,这个约定就是PORT(端口号)。也就是说,客户端可以通过服务端所在机器的IP地址或机器名称和端口号唯一的确定方式来呼叫服务端。在客户端呼叫之前,服务端必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,服务端可以根据情况建立或拒绝连接。连接方式有两种,同步方式(Blocking)和(noBlocking).客户端发送的消息可以是文本,也可以是二进制信息流。当客户方的消息到达服务方端口时,会自动触发一个事件(event),服务端只要接管该事件,就可以接受来自客户端的消息了。3.2 Socket通信流程Socket通信首先在服务器端产生server Socket(同时客户端产生Socket),等待客户端连接服务器端端口号,若进行连接之后,客户端与服务器端便可进行聊天,形成数据流读在缓冲区形成数组,最终显示在文本域中,当客户端与服务器端断开连接之后,立即退出,服务器端继续监、等待。图3-1 Socket通信活动图3.3 服务器端设计由需求分析可知,在服务器端进行程序设计时,首先要实现服务器端设置socket,允许客户端访问,在编程设计时要实现图形化界面设计 设置socket语句ServerSocket server;/生成服务器套接字server = new ServerSocket(5000);/实例化套接字端口为5000 client = server.accept();/等待客户机连接ta.append(客户机是 + client.getInetAddress().getHostName() + nn) /获得本机地址/获得指定的IP地址ta.append(客户机是: +192.168.97. 85 +nn);/获得请求连接服务器的客户机的IP地址ta.append(客户机是: + +nn); 服务器端程序设计Label label=new Label(交谈内容);TextField tf= new TextField(20);/实例化文本框TextArea ta=new TextArea( );/实例化文本域Panel panel=new Panel( );/创建面板对象ServerSocket server;/创建服务器套接字Socket Client;/创建客户机套接字InputStream DataIn;/定义输入流OutputStream DataOut;/定义输出流public Server( ) super(服务器); setSize(300,180);/设置窗体大小 panel.add(label);/在面板上添加标签 panel.add(tf);/在面板上添加文本框 tf.addActionListener(this);/注册 add(North,panel);/在窗体上添加面板 add(Center,ta);/在窗体上添加文本区 addWindowListener(new WindowAdapter( ) public void windowClosing(WindowEvent e) System.exit(0);); show( ); /可以提示 try server =new ServerSocket(5000); Client=server.accept( );/等待客户机连接ServerSocket(5000); /获得指定的IP地址 /ta.append(客户机是: +192.168.97. 85 +nn); /获得请求连接服务器的地址 ta.append(客户机是: + +nn); DataIn=Client.getInputStream( );/实例化输入流 DataOut=Client.getOutputStream( );/实例化输出流 catch(IOException ioe) /捕获异常 while(true) try byte buff =new byte512;/缓冲数组 DataIn.read(buff);/读出数组数据 String str=new String(buff);/接受客户端发送的数据包 ta.append(客户机说:+str+n); catch(IOException ioe) public static void main(String args ) new Server( );/实例化Sever对象 public void actionPerformed(ActionEvent e)/事件监听处理程序 try String str=new String(tf.getText();/实例化字符串 byte buf =str.getBytes( );/读出数组 tf.setText( ); DataOut.write(buf); ta.append(服务器说:+str+n); catch(IOException ioe) 3.4客户端设计 由需求分析可知,在客户端进行程序设计时,首先要实现客户端设置socket,输入客户端IP地址,请求连接,在编程设计时要实现图形化界面设计。 设置socket语句Socket client;/生成客户端套接字client = new Socket(192.168.97.85,4000);/实例化客户端 客户端程序设计Label label=new Label(交谈内容);TextField tf= new TextField(20);/实例化文本框TextArea ta=new TextArea( );/实例化文本域Panel panel=new Panel( );/创建面板对象ServerSocket server;/创建服务器套接字Socket Client;/创建客户机套接字InputStream DataIn;/定义输入流OutputStream DataOut;/定义输出流public Client( ) super(客户机); setSize(300,180); panel.add(label);/在面板上添加标签 panel.add(tf);/在面板上添加文本框 tf.addActionListener(this);/注册 add(North,panel);/在窗体上添加面板 add(Center,ta);/在窗体上添加文本区 addWindowListener(new WindowAdapter( ) public void windowClosing(WindowEvent e) System.exit(0);); show( ); try Client=new Socket(InetAddress.getLocalHost( ),5000); ta.append(Client.getInetAddress( ).getHostName( )+nn); /ta.append(客户机是: +192.168.97.84+nn); DataIn=Client.getInputStream( );/实例化输入流 DataOut=Client.getOutputStream( );/实例化输出流 catch(IOException ioe) while(true) try byte buff =new byte512;/缓冲数组 DataIn.read(buff);/读出数组数据 String str=new String(buff);/接受客户端发送的数据包 ta.append(服务器说:+str+n); catch(IOException ioe) public static void main(String args ) new Client( ); public void actionPerformed(ActionEvent e)/事件处理程序 try String str=new String(tf.getText();/实例化字符串 byte buf =str.getBytes( );/字符串转换为数组存储 tf.setText( ); DataOut.write(buf);/在客户机中写出输出流里的数组 ta.append(客户机说:+str+n);/写入文本域 catch(IOException ioe) /捕获异常四、结果分析本设计通过套接字来实现进程间的通信。在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 运行出错时状态图4.5 分析客户机请求连接服务器,必须在服务器端建立套接字之后。对于4.3的错误操作,会使通信无法进行。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字笔算课件
- 汉字的形体课件
- 汉字添彩显个性课件
- 辽宁省沈阳市名校2026届高三上学期8月诊断考试语文试卷(含答案)
- 汽车产业发展趋势与创新区域分析
- 旅游协议书汇编15篇
- 软件开发行业技术应用方案
- 美容美发行业美容美发新技术应用
- 汉字书法课件模板楷书崖
- 军事理论-国家安全环境强化版知到智慧树答案
- 枣庄学院《图学基础与计算机绘图》2024-2025学年第一学期期末试卷
- 2025-2030城市矿产开发利用政策支持与商业模式创新报告
- 产品线库存管理与补货预测系统
- 2025年高考(山东卷)历史真题及答案
- 医学减重管理体系
- 初中历史教师培训讲座
- 2025年新营运损失费赔偿协议书
- 手术部运用PDCA循环提高手术室术后设备器材定位归还率品管圈
- 传统丧事流程安排方案
- 第三课第三框法国大革命和拿破仑帝国课件
- JJF 2256-2025体重秤校准规范
评论
0/150
提交评论