java实现点对点通信要点.pdf

上传人:tbuqq 文档编号:5197255 上传时间:2020-02-19 格式:PDF 页数:13 大小:645.19KB
返回 下载 相关 举报
java实现点对点通信要点.pdf_第1页
第1页 / 共13页
java实现点对点通信要点.pdf_第2页
第2页 / 共13页
java实现点对点通信要点.pdf_第3页
第3页 / 共13页
java实现点对点通信要点.pdf_第4页
第4页 / 共13页
java实现点对点通信要点.pdf_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《java实现点对点通信要点.pdf》由会员分享,可在线阅读,更多相关《java实现点对点通信要点.pdf(13页珍藏版)》请在三一文库上搜索。

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

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

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

4、P ) ,远程网络访问协议( Telnet )和简单邮件传输协议(SMTP ) 。这些协议通常和 TCP/IP 协议打包在一起。使用模拟电话调制解调器连接网络的个人电脑通常是使用串行 线路接口协议(SLIP)和点对点协议(P2P ) 。这些协议压缩IP 包后通过拨号电话线发送到 对方的调制解调器中。与 TCP/IP 协议相关的协议还包括用户数据报协议(UDP ) ,它代替 TCP/IP 协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet 控制信息协议(ICMP ) ,内部网关协议(IGP) ,外部网关协议(EGP ) ,边界网关协议 (BGP ) 。 通信网络设计

5、课程设计题号: W3 设计日期 20120903 -20120915 2socket 协议介绍 (1). 什么是 socket Socket, 简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两 个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在 比较低的层次上通信的。 具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当 一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分 配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读 socket中的信息,类似的服务器也

6、获得一个本地端口,它需要一个新的端口号来侦听原始 端口上的其他连接请求。服务器也通过它的本地端口连接一个socket ,通过读写和客户端 通信。 (2).Socket程序的工作过程: 1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通 道。 2、数据通信:利用虚拟连接通道传送数据信息进行通道。 3、关闭:通信结束时,再将所建的虚拟连接拆除。 具体如下: 服务器 三次握手: 第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧 第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和 源端机连接序列号的确认。 第三此握手:源端机收

7、到含有两次初始序列号的应答后,在向目的主机发送一个带有两次 连接的序列号的确认。 具体过程如下: 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 (3).如何开发一个Server-Client模型的程序 开发原理: 服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024 以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使 用大于1024 的端口),等待客户连接请求,客户连接后,会话产生;在完成会话 后,关闭连接。 客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦 连接成功,打开会话;会

8、话完成后,关闭Socket 。客户端不需要指定打开的端 口,通常临时的、动态的分配一个1024 以上的端口。 Socket 接口是TCP/IP 网络的API,Socket接口定义了许多函数或例程,程序员可以用它 们来开发TCP/IP 网络上的应用程序。要学Internet上的TCP/IP 网络编程,必须理解 Socket接口。 Socket接口设计者最先是将接口放在Unix 操作系统里面的。如果了解 Unix 系统的输入和输出的话,就很容易了解Socket 了。网络的Socket 数据传输是一种特 殊的I/O ,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用 S

9、ocket(),该函数返回一个整型的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 Vi

10、rtual Machine)和 Java 应用编程接口(Application Programming Interface、简称API)构成。 Java 应用 编程 接口为Java 应用提供了一个独 立于 操作系统 的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一 个 Java 平台之后, Java 应用程序就可运行。现在Java 平台已经嵌入了几乎所有的操作系 统。这样Java 程序可以只编译一次,就可以在各种系统中运行。Java 应用编程接口已经 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 从 1.1x 版发展到1.2 版。目前常用的

11、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。它允许开发 和部署在桌面、服务器、嵌入式环境和实时环境中使

12、用的 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 architectu

13、re,SOA )和 Web 2.0 应用程 序。 * Java ME (Java Platform,Micro Edition) 。这个版本以前称为 J2ME。Java ME 为在移 动设备和嵌入式设备(比如手机、PDA 、电视机顶盒和打印机)上运行的应用程序提供一个 健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协 议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序 只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 4、设计方法 总的设计思想是利用java里的套接字Socket 和 ServerSo

14、cket (客户 / 服务器)来建 立进程之间的通信,Socket 和 ServerSocket类库位于包中。 ServerSocket用于 服务器端, Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个 Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等 的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是 ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 Accept方法用于产生“ 阻塞 “,直到接受到一个连接,并且返回一个客户端的 Socket对象实例。 “ 阻塞 “ 是一

15、个术语,它使程序运行暂时“停留 “在这个地方,直到一个会 话产生,然后程序继续;通常“阻塞 “ 是由循环产生的。 getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。 getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对 象实例。 注意:其中getInputStream和 getOutputStream方法均会产生一个IOException ,它 必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。 三 设计功能 1、将键盘上输入的数据发送到另一台计算机上 2、能将接收到的数据显示到屏幕窗口内 3、

16、能和不同的电脑建立连接 4、有简单美观的界面 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 四 程序流程图 开始 初始化各界面变量 界面设置 建立 ServerSocket() 绑定 Socket 进行监 听 监听 IP 收发数据 关闭连接 为空 不为空 开始 初始化各界面变量 界面设置 建立 Socket() 输入 IP 地址 连接 IP 收发数据 关闭连接 连接不成功 连接不成功 服务端 客户端 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 五 程序清单 服务器端 /* * (#)liaotian.java * aut

17、hor * 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 ActionListener JTextArea j

18、ta; 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(“发送 “); 通信网络设计课程设计题号: W3 设计

19、日期 20120903 -20120915 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)

20、“); this.setSize(430, 350); this.setDefaultCloseOperation(EXIT_ON_CLOSE);/关闭聊天窗口,即 关闭程序, this.setVisible(true); /窗口可见 try ServerSocket ss=new ServerSocket(8000); / 服务器在8000 端 口监听 Socket s=ss.accept();/建立 socket对象 s,闭关将与客户端的 连接封装成一个对象 InputStreamReader isr=new InputStreamReader(s.getInputStream();/新建

21、并构造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(); 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 p

22、ublic void actionPerformed(ActionEvent e) /如果按下发送按钮 / TODO Auto-generated method stub if(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

23、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; Pri

24、ntWriter pw; 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 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 ImageI

25、con(“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);/关闭聊天窗口,即关闭 程序, t

26、his.setVisible(true);/窗口可见 try Scanner 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 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 InputStreamReade

27、r(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-generate

28、d method stub if(e.getSource()=jb) String info=jtf.getText(); jta.append(“客户端对服务器说:“+info+“rn“); pw.println(info); jtf.setText(“);/清空发送文本框 六 测试数据及其结果 程序包括服务器端和客户端。 服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024 以下的 端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024 的端 口) ,本次使用的是8000 端口号,等待客户连接请求,客户连接后,会话产生;在完成会 话后,

29、关闭连接。 服务器端的程序界面如下 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 客户端,使用Socket 对网络上某一个服务器的某一个端口发出连接请求,一旦连接成 功,打开会话;会话完成后,关闭Socket 。客户端不需要指定打开的端口,通常临时的、 动态的分配一个8000 口。 客户端的程序界面如下: 运行时,先打开运行服务器程序,然后运行客户端程序,在客户端输入服务器的IP 地 址,然后就可以发送消息,进行聊天。对于服务起IP 地址的获取按照如下方法 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 1. 单击“任务条”

30、上的“启动”。 2. 选择“运行”。 3. 在运行中输入cmd ,再回车。 4. 在cmd界面上输入 ipconfig然后回车,就可以得到IP地址,子网掩码,默认网关。 要运行 JAVA 程序,需要两台电脑上都安装JAVA 平台,有点麻烦,因此测试时可以输入保留 的IP 地址号 127.0.0.1,在最后修改完善后再与别的电脑建立连接。 通信网络设计课程设计题号: W3 设计日期 20120903 -20120915 七 总结体会 本次课程设计选择了用JAVA实现点对点通信的课题,虽然以前没学过JAVA ,但我 还是毫不犹豫地选择了这个颇具挑战性的题目,想借助这个机会有目地学习下这门语言。 由

31、于以前学过C语言,有一定的编程基础,通过一边看书本一边把书本上的程序一个个在 电脑上实现,并且按照自己的想法修改,三天左右,就用法学通了最基础的语法。此时, 借助书本和网络已经可以看懂别人的程序。在对JAVA的使用有了个大体的了解基础上,我 就开始动手编写自己的程序。 动手之前我并不急于敲写代码。首先看书理解Socket 的基本概念工作原理、 socket 的建立、监听、连接、发送数据和接收数据,然后看如何在JAVA中实现 socket 的 建立、监听等;对核心的算法有了了解后我就开始构造自己的界面。用JAVA中的 GUI 编程 实现界面的建立和美化,这比用C语言编写来得简单很多,但是在添加边

32、框图片、如何合 理地排列它们上还是花费了一番功夫。通过几天的修改,程序已经能够在自己电脑上运 行,很是开心。由于刚开始所要连接的服务器的IP 地址是在客户端的代码中输入的,运行 时只能和一台电脑建立连接,想要和其它的电脑聊天时要在客户端代码中修改服务器的IP 地址,很是不方便。于是我就在客户端代码中调用System.in()函数 , 把服务器IP 地址改 为从键盘输入,这样就大大增加了代码的通用性。在两台电脑上调试成功后,我发现界面 的建立那一段代码有点繁琐,于是又做了一番修改,删除不必要的语句,减少了代码的存 储空间。至此,课程设计暂时结束,开始整理和总结。 在课设中,个人认为最重要的就是要

33、动手做。不要因为不懂JAVA就不断抱怨,不 要想把所有的步骤都在心里计算清楚后再动手做,更不要因为出现出现错误、编译不过就 放弃。编程在于动手做,不断尝试,不断修改,不断进步;人生之路也是这样,不断着手 实现心中的想法,不断尝试,不断修改,然后不断进步。 两个星期下来,把以前分散学习的计算机网络技术知识点系统地复习与应用了一遍, 并且能具体的用到了简单的网络连接的实际问题中去,编出了简单的点对点聊天器。看到 电脑上出现的聊天记录,心里的喜悦是无以言表的。 八参考文献 1 施荣华王国才编著计算机网络技术与应用中国铁道出版社 2009 2. 马皓编著 Java 语言与面向对象程序设计清华大学出版社 3. 杨佩理周洪斌编著Java 程序设计基础教程机械工业出版社 2012

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1