




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信网络设计课程设计 题号:W3 设计日期20120903 -20120915用java实现的点对点通信程序的设计通信0903班 学号: 姓名: 指导老师:王国才、杨政宇一 设计目标:1.使用Java高级面向对象编程语言编写一个网络聊天程序。2. 理解Socket的基本概念工作原理,掌握Socket的建立、监听、连接、发送数据和接收数据3.环境要求:Windows95/98/2000/XP,WinSocke4.能将键盘上输入的数据发送到另一台计算机上;5.能将接收到的数据显示到屏幕窗口内;6.类似于一般的主流网络即时聊天程序为了简化程序和系统结构,将 “客户端服务器客户端”的数据传输方式改为“客户端服务器”的模式。7.程序应该具有图形界面,要具备聊天程序的基本雏形。二 设计原理与方法1. TCP/IP协议的介绍TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。 TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。 许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。 使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。 与TCP/IP协议相关的协议还包括用户数据报协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。2socket协议介绍(1).什么是socketSocket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。(2).Socket程序的工作过程:1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。2、数据通信:利用虚拟连接通道传送数据信息进行通道。3、关闭:通信结束时,再将所建的虚拟连接拆除。具体如下:服务器三次握手:第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次连接的序列号的确认。具体过程如下: (3).如何开发一个Server-Client模型的程序开发原理: 服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。3 Java编程语言介绍Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。(1)java平台构架Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。 * Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。 * Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。 * Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。4、设计方法总的设计思想是利用java里的套接字Socket和ServerSocket(客户/服务器)来建立进程之间的通信,Socket和ServerSocket类库位于包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 Accept方法用于产生阻塞,直到接受到一个连接,并且返回一个客户端的Socket对象实例。阻塞是一个术语,它使程序运行暂时停留在这个地方,直到一个会话产生,然后程序继续;通常阻塞是由循环产生的。 getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。 getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。 注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。三 设计功能1、将键盘上输入的数据发送到另一台计算机上2、能将接收到的数据显示到屏幕窗口内3、能和不同的电脑建立连接4、有简单美观的界面四 程序流程图 客户端服务端开始初始化各界面变量界面设置建立Socket()输入IP地址连接IP收发数据关闭连接连接不成功连接不成功开始初始化各界面变量界面设置建立ServerSocket()绑定Socket进行监听监听IP收发数据关闭连接为空不为空不为空五 程序清单服务器端/* * (#)liaotian.java * author * version 1.00 2012/9/12*服务器端 */package keshe.xiaoxue;import javax.swing.*; /窗口工具包import .*; /网络应用包import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*; /输入输出软件包/implements AcionListene class MyServer extends JFrame implements ActionListenerJTextArea jta;JTextField jtf;JLabel pic1;JLabel pic2;JButton jb;JScrollPane jsp;JPanel jp1;PrintWriter pw;public static void main(String args)MyServer msv=new MyServer();public MyServer()jta=new JTextArea();jtf=new JTextField(20);jsp=new JScrollPane(jta);jb=new JButton(发送);pic1= new JLabel(new ImageIcon(1.jpg);pic2= new JLabel(new ImageIcon(2.jpg);jb.addActionListener(this);jp1=new JPanel(); this.add(pic1,North); this.add(jsp,Center);this.add(pic2,East);jp1.add(jtf);jp1.add(jb);this.add(jp1,South);this.setTitle(点对点通信(Server);this.setSize(430, 350); this.setDefaultCloseOperation(EXIT_ON_CLOSE);/关闭聊天窗口,即关闭程序,this.setVisible(true); /窗口可见tryServerSocket ss=new ServerSocket(8000);/服务器在8000端口监听Socket s=ss.accept();/建立socket对象s,闭关将与客户端的连接封装成一个对象InputStreamReader isr=new InputStreamReader(s.getInputStream();/新建并构造InputStreamReader对象,读入字节流BufferedReader br=new BufferedReader(isr);/读入isr的文本文件,并放入缓冲区pw=new PrintWriter(s.getOutputStream(),true);while(true)String info=br.readLine();/读取信息jta.append(客户端对服务器说:+info+rn);catch(Exception e)e.printStackTrace();public void actionPerformed(ActionEvent e) /如果按下发送按钮/ TODO Auto-generated method stubif(e.getSource()=jb)String info=jtf.getText();jta.append(服务器对客户端说:+info+rn);pw.println(info);jtf.setText();/清空发送文本框客户端: * (#)client.java * author * version 1.00 2012/9/12 */package keshe.xiaoxue;import java.util.Scanner;import javax.swing.*;import .*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*; class MyClient extends JFrame implements ActionListener JTextArea jta;JTextField jtf;JButton jb;JLabel pic1;JLabel pic2;JScrollPane jsp;JPanel jp1;PrintWriter pw;public static void main(String args)MyClient mct=new MyClient();public MyClient()jta=new JTextArea();jtf=new JTextField(20);jsp=new JScrollPane(jta);jb=new JButton(发送);pic1= new JLabel(new ImageIcon(1.jpg);pic2= new JLabel(new ImageIcon(2.jpg);jb.addActionListener(this);jp1=new JPanel();this.add(pic1,North);this.add(jsp,Center);this.add(pic2,East);jp1.add(jtf);jp1.add(jb);this.add(jp1,South);this.setTitle(点对点通信(Client);this.setSize(430, 350); this.setDefaultCloseOperation(EXIT_ON_CLOSE);/关闭聊天窗口,即关闭程序,this.setVisible(true);/窗口可见tryScanner sc1= new Scanner(System.in);System.out.println(请输服务器的IP地址:);String IPaddr = sc1.nextLine();System.out.println(您输入的IP地址是: + IPaddr);Socket s=new Socket(IPaddr,8000);InputStreamReader isr=new InputStreamReader(s.getInputStream();BufferedReader br=new BufferedReader(isr);pw=new PrintWriter(s.getOutputStream(),true);while(true)String info=br.readLine();/读取从服务器发来的信息jta.append(服务器对客户端说:+info+rn);catch(Exception e)e.printStackTrace();public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb)String info=jtf.getText();jta.append(客户端对服务器说:+info+rn);pw.println(info);jtf.setText();/清空发送文本框六 测试数据及其结果程序包括服务器端和客户端。服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),本次使用的是8000端口号,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。服务器端的程序界面如下客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个8000口。 客户端的程序界面如下: 运行时,先打开运行服务器程序,然后运行客户端程序,在客户端输入服务器的IP地址,然后就可以发送消息,进行聊天。对于服务起IP地址的获取按照如下方法1. 单击“任务条”上的“启动”。 2. 选择“运行”。 3. 在运行中输入cmd,再回车 。 4. 在cmd界面上输入ipconfig然后回车,就可以得到IP地址,子网掩码,默认网关。 要运行JAVA程序,需要两台电脑上都安装JAVA平台,有点麻烦,因此测试时可以输入保留的IP地址号,在最后修改完善后再与别的电脑建立连接。 七 总结体会 本次课程设计选择了用JAVA实现点对点通信的课题,虽然以前没学过JAVA,但我还是毫不犹豫地选择了这个颇具挑战性的题目,想借助这个机会有目地学习下这门语言。由于以前学过C语言,有一定的编程基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核桃品种考试题及答案
- 勾股定理考试题及答案
- 公交乘务考试题及答案
- 《体育诗词会-运动项目与古诗匹配》
- 财务报销申请审批流程标准化手册费用控制高效版
- 企业文化塑造及宣传工具集
- 《中国历史大事年表及影响:初中历史教学教案》
- 房车自驾考试题及答案
- 红星快乐营800字8篇
- 动物插画考试题及答案
- 全友家居加盟合同范本
- 地理-法国课件-2024-2025学年湘教版地理七年级下册
- 国际贸易学(第五版)课后题参考答案 金泽虎
- 【镇江】2025年江苏镇江市高等专科学校公开招聘工作人员5人笔试历年典型考题及考点剖析附带答案详解
- 2025年家庭医生签约服务培训大纲
- 数电 第三章 门电路学习资料
- 培训课件 -面相识人 -识人秘籍内部资料
- 汽车维修试车协议书
- 髋关节置换术后护理讲课
- 电梯有限空间作业安全专项施工方案
- 连锁餐饮督导管理制度
评论
0/150
提交评论