java实现点对点通信要点_第1页
java实现点对点通信要点_第2页
java实现点对点通信要点_第3页
java实现点对点通信要点_第4页
java实现点对点通信要点_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通信网络设计课程设计 题号:W3 设计日期20120903 -20120915用java实现的点对点通信程序的设计通彳t 0903班 学号: 姓名: 指导老师:王国才、杨政宇一设计目标:1 .使用Java高级面向对象编程语言编写一个网络聊天程序。2 .理解Socket的基本概念工作原理,掌握 Socket的建立、监听、连接、发送数据和 接收数据3 .环境要求:Windows95/98/2000/XP,WinSocke4 .能将键盘上输入的数据发送到另一台计算机上;5 .能将接收到的数据显示到屏幕窗口内;6 .类似于一般的主流网络即时聊天程序为了简化程序和系统结构,将“客户端一一服务器一一客户端

2、”的数据传输方式改为“客户端一一服务器”的模式。7 .程序应该具有图形界面,要具备聊天程序的基本雏形。二设计原理与方法1. TCP/IP协议的介绍TCP/IP (传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/巴程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接U端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地

3、。网络上的 网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点 对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。许多用户熟悉使用 TCP/IP协议的高层应用协议。包括 万维网的超文本传输协议(HTTP),文件传 输协议(FTP),远程网络访问协议(Telnet )和简单邮件传输协议(SMTP。这

4、些协议通常和 TCP/IP协议打包在一起。 使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到 对方的调制解调器中。与TCP/IP协议相关的协议还包括用户数据报协议( UDP,它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP ,内部网关协议(IGP),外部网关协议( EGP ,边界网关协议(BGP。2. socket协议介绍(1) .什么是 socketSocket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两

5、个或两 个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在 比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当 一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分 配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始 端口上的其他连接请求。服务器也通过它的本地端口连接一个socket ,通过读写和客户端通信。(2) .Socket 程序的工作过程:1、建立Socket连接:在通信

6、开始之前由通信双方确认身份,建立一条专用的虚拟连接通 道。2、数据通信:利用虚拟连接通道传送数据信息进行通道。3、关闭:通信结束时,再将所建的虚拟连接拆除。具体如下:服务器三次握手:第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和 源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次 连接的序列号的确认。具体过程如下:第一次握手,主机A向ACK=lt=lJSEQ-王机A* 王机B-第二次握手,主机B收到主机A 的请求,向王机A回发一个确认, 同时向主机A

7、发送一个连接请求 自三次握手,王机上收全主机B发送的徽据包在向好机B发送一个确认连汽(3) .如何开发一个Server-Client 模型的程序开发原理:服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于 1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使 用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话 后,关闭连接。客户端,使用 Socket对网络上某一个服务器的某一个端口发出连接请求,一旦 连接成功,打开会话;会话完成后,关闭 Socket。客户端不需要指定打开的端 口,通常临时的、动态的分配一个1024以上

8、的端口。Socket接口是TCP/IP网络的API, Socket接口定义了许多函数或例程,程序员可以用它 们来开发 TCP/IP网络上的应用程序。要学 Internet 上白TCP/IP网络编程,必须理解 Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket 了。网络的Socket数据传输是一种特殊的I/O , Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用 Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实

9、现的。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

10、 、简称 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 Platf

11、orm,Enterprise Edition , java 平台企业版),JavaME(Java 2 Platform Micro Edition , java 平台微型版)。* Java SE J Java Platform , Standard Edition )。Java SE 以前称为 J2SE。它允许开发 和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE包含了支持 Java Web 服务开发的类,并为 Java Platform , Enterprise Edition J Java EE) 提供基础。* Java EE J Java Platfor

12、m , 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电视机顶盒和打印机)上运行的应用程序提

13、供一个健壮且灵活的环境。Java ME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME规范的应用程序 只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。4、设计方法总的设计思想是利用java里的套接字 Socket和ServerSocket (客户/服务器)来建立进程之间的通信,Socket和ServerSocket类库位于 包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个 Socket实例,操作这个实例,完成所需的会话。对于一个网络

14、连接来说,套接字是平等 的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过 SocketImpl类及其子类完成的。Accept方法用于产生阻塞”,直到接受到一个连接,并且返回一个客户端的 Socket对象实例。阻塞是一个术语,它使程序运行暂时停留在这个地方,直到一个会话产生,然后程序继续;通常阻塞”是由循环产生的。getInputStream 方法获得网络连接输入,同时返回一个 InputStream对象实例。 getOutputStream 方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:

15、其中 getInputStream 和 getOutputStream 方法均会产生一个 IOException ,它 必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。三设计功能1、将键盘上输入的数据发送到另一台计算机上2、能将接收到的数据显示到屏幕窗口内3、能和不同的电脑建立连接4、有简单美观的界面四程序流程图五程序清单服务器端/* (#)liaotian.java* author* version 1.00 2012/9/12*服务器端*/package keshe.xiaoxue;import javax.swing.*; /窗口工具包import .*; /网络应用包im

16、port java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*; /输入输出软件包/implements AcionListeneclass MyServer extends JFrame implements ActionListenerJTextArea jta;JTextField jtf;JLabel pic1;JLabel pic2;JButton jb;JScrollPane jsp;JPanel jp1;PrintWriter pw;public static void m

17、ain(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(j

18、sp,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); 窗 口可见try ServerSocket ss=new ServerSocket(8000);服务器在 8000 端口监听Socket s=ss.accept();/建立socke

19、t对象s,闭关将与客户端的连接封装成一个对象InputStreamReaderisr=newInputStreamReader(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);cat

20、ch(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

21、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

22、 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=ne

23、w 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);Syst

24、em.out.println( 请输服务器的 IP 地址:);String IPaddr = sc1.nextLine();System.out.println(您输入的 IP 地址是:+ IPaddr);Socket s=new Socket(IPaddr,8000);InputStreamReaderisr=newInputStreamReader(s.getInputStream();BufferedReader br=new BufferedReader(isr);pw=new PrintWriter(s.getOutputStream(),true); while(true)Stri

25、ng 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();清空发送文本框六测试数据

26、及其结果程序包括服务器端和客户端。服务器,使用 ServerSocket监听指定的端口,端口可以随意指定(由于 1024以下的 端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),本次使用的是8000端口号,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。服务器端的程序界面如下客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成 功,打开会话;会话完成后,关闭 Socket。客户端不需要指定打开的端口,通常临时的、 动态的分配一个 8000 口。客户端的程序界面如下:IP地运行时,先 打开运行服务器程序,然后运行客

27、户端程序,在客户端输入服务器的址,然后就可以发送消息,进行聊天。对于服务起IP地址的获取按照如下方法1 .单击“任务条”上的“启动”。2 .选择“运行”。3 .在运行中输入cmd,再回车。4 .在cmd#面上输入ipconfig然后回车,就可以得到IP地址,子网掩码,默认网关。要运行JAVA程序,需要两台电脑上都安装JAVAF台,有点麻烦,因此测试时可以输入保留的IP地址号 ,在最后修改完善后再与别的电脑建立连接。七总结体会本次课程设计选择了用 JAVA实现点对点通信的课题,虽然以前没学过JAVA但我还是毫不犹豫地选择了这个颇具挑战性的题目,想借助这个机会有目地学习下这门语言。由于以前学过C语言,有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论