版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用java实现的点对点通信程序的设计通信0903班 学号: 姓名: 指导老师:王国才、杨政宇一设计目标:1. 使用Java高级面向对象编程语言编写一个网络聊天程序。2. 理解Socket的基本概念工作原理,掌握 Socket的建立、监听、连接、发送数据和 接收数据3. 环境要求:Windows95/98/2000/XP,WinSocke4. 能将键盘上输入的数据发送到另一台计算机上;5. 能将接收到的数据显示到屏幕窗口内;6. 类似于一般的主流网络即时聊天程序为了简化程序和系统结构,将“客户端一一服务器一一客户端”的数据传输方式改为“客户端一一服务器”的模式。7. 程序应该具有图形界面,要具备
2、聊天程序的基本雏形。二设计原理与方法1. TCP/IP协议的介绍TCP/IP (传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被 用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分 成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的 网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路
3、由也有可能不 同,但最后会在目的地汇合。TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它 们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。许多用户熟悉使用 TCP/IP协议的高层应用协议。包括 万维网的超文本传输协议(HTTP),文件传 输协议(FTP),远程网络访问协议(Telnet )和简单邮件传输协议(SMTP。这些协议通常和 TCP/IP协议打包在一起。使用模拟电话调制解调器连接网络的个
4、人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到 对方的调制解调器中。与TCP/IP协议相关的协议还包括用户数据报协议( UDP,它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括In ternet控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP,边界网关协议(BGP。2. socket协议介绍(1).什么是 socketSocket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两 个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字
5、是在 比较低的层次上通信的。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当 一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分 配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始 端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。.Socket 程序的工作过程:1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通 道。2、数据通信:利用虚拟连接通道传送
6、数据信息进行通道。3、关闭:通信结束时,再将所建的虚拟连接拆除。 具体如下:服务器三次握手:第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧第二次握手:目的主机收到请求后,如果冋意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次 连接的序列号的确认。具体过程如下:第砸手,土郴A冋ACK-1,SYN-1 sro-莘二友握手,主机B收创主机A 的请求向主机A亘废一个确认“ 同呵冋王机A发运一伍接请求*第三安提三,主玉机B发医的皴抿旦在向 王机B发送一亍确认连联.(3).如何开发一个Server
7、-Clie nt模型的程序开发原理:?服务器端,使用ServerSocket监听指定的端口,端口可以随意指定(由于 1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使 用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话 后,关闭连接。? 客户端,使用 Socket对网络上某一个服务器的某一个端口发出连接请求,一旦 连接成功,打开会话;会话完成后,关闭Socket o客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。Socket接口是TCP/IP网络的API, Socket接口定义了许多函数或例程,程序员可以用它 们来开
8、发 TCP/IP网络上的应用程序。要学In ternet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket 了。网络的Socket数据传输是一种特殊的I/O , Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用 Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。3. Java编程语言介绍Java,是由Sun Microsystems 公司于1995年5月推出的Java程序
9、设计语言和 Java 平台的总称。用 Java实现的HotJava浏览器(支持 Java applet )显示了 Java的魅力: 跨平台、动态的 Web In ternet 计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet 。(1)java 平台构架Java 平台由 Java 虚拟机(Java Virtual Machine)和 Java 应用编程接口( ApplicationProgrammi ng In terface、简称 API)构成。Java应用编程 接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
10、在硬件或操作系统平台上安装一 个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,EnterpriseEdition , java 平台企业版),JavaME(Java 2Platform Micro Ed
11、ition , 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应
12、用程序。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包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于Jav
13、a ME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。4、设计方法总的设计思想是利用java里的套接字 Socket和ServerSocket (客户/服务器)来建立进程之间的通信,Socket和ServerSocket类库位于 包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个 Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等 的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过Socke
14、tImpl类及其子类完成的。Accept方法用于产生”阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。”阻塞"是一个术语,它使程序运行暂时”停留"在这个地方,直到一个会话产生,然后程序继续;通常”阻塞"是由循环产生的。getI nputStream 方法获得网络连接输入,同时返回一个In putStream对象实例。getOutputStream 方法连接的另一端将得到输入,同时返回一个 Outputstream对 象实例。注意:其中 getInputStream 和 getOutputStream 方法均会产生一个 lOException,
15、它 必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。三设计功能1、将键盘上输入的数据发送到另一台计算机上2、能将接收到的数据显示到屏幕窗口内3、能和不同的电脑建立连接4、有简单美观的界面四程序流程图五程序清单服务器端* (#)liaotia n.java* author* version 1.00 2012/9/12*服务器端*/package keshe.xiaoxue;import javax.swi ng.*; /窗口工具包import java. net.*; /网络应用包输入输出软件包/impleme nts Acion Liste neclass MyServer e
16、xte nds JFrame impleme nts Action Liste nerJTextArea jta;JTextField jtf;JLabel pic1;JLabel pic2;JButton jb;JScrollPa ne jsp;JPa nel jp1;Prin tWriter pw;public static void main(String args)MyServer msv=new MyServer();public MyServer()jta=new JTextArea();jtf=new JTextField(20);jsp=new JScrollPa ne(jta
17、);jb=new JButton(”发送");pic仁 new JLabel( new Imagelc on ("1.jpg");pic2= new JLabel( new ImageIc on ("2.jpg");jb.addAct ion Liste ner(this);jp1= new JPa nel();this.add(pic1,"North");this.add(jsp,"Ce nter");this.add(pic2,"East");jp1.add(jtf);jp1.ad
18、d(jb);this.add(jp1,"South");this.setTitle(”点对点通信(Server)");this.setSize(430, 350);this.setDefaultCloseOperatio n( EXIT_ON_CLOSE);关闭聊天窗口,即关闭程序,this.setVisible(true); /窗口可见tryServerSocket ss=new ServerSocket(8000);/ 服务器在 8000 端口监听Socket s=ss.accept(); 建立socket对象s,闭关将与客户端的 连接封装成一个对象In pu
19、tStreamReaderisr=newIn putStreamReader(s.getl nputStream();新建并构造In putStreamReader 对象,读入字节流BufferedReader br=new BufferedReader(isr);/读入 isr 的文本文件,并放入缓冲区pw=n ew Prin tWriter(s.getOutputStream(),true);while(true)String in fo=br.readL in e();读取信息jta.appe nd(”客户端对服务器说:"+i nfo+"r n"); cat
20、ch(Excepti on e)e.pri ntStackTrace();如果按下发送按钮"+i nfo+"r n");public void actio nPeformed(Actio nEvent e) / TODO Auto-ge nerated method stub if(e.getSource()=jb)Stri ng in fo=jtf.getText(); jta.appe nd(” 服务器对客户端说:pw.pri ntln (i nfo);清空发送文本框客户端:* (#)clie nt.java* author* version 1.00 201
21、2/9/12*/package keshe.xiaoxue;import javax.swi ng.*;import java .n et.*;class MyClie nt exte nds JFrame impleme nts Action Liste ner JTextArea jta;JTextField jtf;JButton jb;JLabel pic1;JLabel pic2;JScrollPa ne jsp;JPa nel jp1;Prin tWriter pw;public static void main( Stri ng args)MyClie nt mct=new My
22、Clie nt();public MyClie nt()jta=new JTextArea();jtf= new JTextField(20);jsp=new JScrollPa ne(jta);jb=new JButton("发送");pic1= new JLabel( new ImageIc on ("1.jpg");pic2= new JLabel( new ImageIc on ("2.jpg");jb.addActi on Liste ner(this);jp1= new JPa nel();this.add(pic1,&q
23、uot;North");this.add(jsp,"Ce nter");this.add(pic2,"East");jp1.add(jtf);jp1.add(jb);this.add(jp1,"South");this.setTitle(" 点对点通信(Client)"); this.setSize(430, 350);即关闭isr=newthis.setDefaultCloseOperati on (EXIT_ON_CLOSE);关闭聊天窗口,程序,this.setVisible(true);/窗口可见
24、tryScanner sc1= new Sca nn er(System.i n);(”请输服务器的 IP 地址:");String IPaddr = sc1. nextL in e();(”您输入的 IP 地址是:"+ IPaddr);Socket s=new Socket(IPaddr,8000);In putStreamReaderIn putStreamReader(s.getl nputStream();BufferedReader br=new BufferedReader(isr);pw=n ew Prin tWriter(s.getOutputStream(
25、),true);while(true)String in fo=br.readL in e();读取从服务器发来的信息jta.appe nd("服务器对客户端说:"+i nfo+"rn");catch(Excepti on e)e.pri ntStackTrace();public void action Performed(Acti onEvent e) / TODO Auto-ge nerated method stubif(e.getSource()=jb)Stri ng in fo=jtf.getText();jta.appe nd("
26、客户端对服务器说:"+i nfo+"rin");pw.pri ntln (i nfo);jtf.setText("");清空发送文本框六测试数据及其结果程序包括服务器端和客户端。服务器,使用 ServerSocket监听指定的端口,端口可以随意指定(由于 1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),本次使用的是 8000端口号,等待客户连接请求,客户连接后,会话产生;在完成会 话后,关闭连接。服务器端的程序界面如下客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦
27、连接成 功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个 8000 口。客户端的程序界面如下:IP地运行时,先 打开运行服务器程序,然后运行客户端程序,在客户端输入服务器的 址,然后就可以发送消息,进行聊天。对于服务起IP地址的获取按照如下方法1. 单击“任务条”上的“启动”。2. 选择“运行”。3. 在运行中输入cmd,再回车。4. 在cmd界面上输入ipconfig然后回车,就可以得到IP地址,子网掩码,默认网关。要运行JAVA程序,需要两台电脑上都安装JAVA平台,有点麻烦,因此测试时可以输入保留的IP地址号,在最后修改完善后再与别的电脑建立连接。七总结体会本次课程设计选择了用 JAVA实现点对点通信的课题,虽然以前没学过JAVA但我还是毫不犹豫地选择了这个颇具挑战性的题目,想借助这个机会有目地学习下这门语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物流成本优化报告
- 规范开发技术服务合同
- 2025年网络安全产品与技术选型指南
- 《美术馆教育形式创新研究:以互动体验与受众需求满足为出发点》教学研究课题报告
- 跨部门协作与沟通指南(标准版)
- 企业会议计划与会议纪要模板
- 2025年项目管理与风险控制操作手册
- 我的成长故事周记格式记录(10篇)
- 恐龙时代的奇遇想象作文(4篇)
- 考后析得失思则得未来
- 2025中国钢研秋季校园招聘火热进行中笔试参考题库附带答案详解
- 10.2 常见的酸和碱(课件)-2024-2025学年九年级化学人教版下册
- 第8节-万能转换开关
- 2024电力智能录波器技术规范
- 《中国慢性阻塞性肺疾病基层诊疗与管理指南(2024年)》解读课件
- 2024学年绵阳中学高二数学(上)期末考试卷附答案解析
- 女性肿瘤患者的生育力保存
- 暨南大学《法理学》2023-2024学年第一学期期末试卷
- 小学课后服务经费管理方案
- 设备购买合同模板示例
- 道路绿化养护道路绿化养护方案
评论
0/150
提交评论