首页 JAVA-TCP流通信和UDP数据报通信

JAVA-TCP流通信和UDP数据报通信

举报
开通vip

JAVA-TCP流通信和UDP数据报通信某某大学 实 验 报 告 ( 2007  ~2008  学年度    第  二 学期 )   课程名称 分布式系统 实验名称 TCP流通信和UDP数据报通信           姓名   学号           专业 计算机科学与技术 班级 1         地点   教师           摘要: TCP/IP(Transmission Control Protocol/Internet P...

JAVA-TCP流通信和UDP数据报通信
某某大学 实 验 报 告 ( 2007  ~2008  学年度    第  二 学期 )   课程名称 分布式系统 实验名称 TCP流通信和UDP数据报通信           姓名   学号           专业 计算机科学与技术 班级 1         地点   教师           摘要: TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,又叫网络通讯 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,这个协议是是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。 UDP(User Datagram Protocol) 用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。是一个简单的面向数据报的传输层协议,IETF RFC 768是UDP的正式 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 。 UDP 协议基本上是 IP协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序 正文: 实验目的: 1、熟悉开发环境.用java实现TCP流通信和UDP数据报通信。 2、了解UDP和TCP协议机制。 实验步骤: 了解TCP和UDP协议的原理 查阅资料 安装软件并进行配置用java实现TCP流通信和UDP数据报通信 实验平台: 操作系统:WindowsXP 编程工具:Eclipse 开发时间:七天 实验原理: 所谓数据报(Datagram)就跟日常生活中的邮件系统一样,是不能保证可靠的寄到的,而面向链接的TCP就好比电话,双方能肯定对方接受到了信息。在本章前面,我们已经对UDP和TCP进行了比较,在这里再稍作小节: TCP,可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。 UDP,不可靠,差错控制开销较小,传输大小限制在64K以下,不需要建立连接。 总之,这两种协议各有特点,应用的场合也不同,是完全互补的两个协议,在TCP/IP协议中占有同样重要的地位,要学好网络编程,两者缺一不可。 java.net中提供了两个类DatagramSocket和DatagramPacket用来支持数据报通信,DatagramSocket用于在程序之间建立传送数据报的通信连接, DatagramPacket则用来 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示一个数据报。先来看一下DatagramSocket的构造方法: DatagramSocket(); 其中,port指明socket所使用的端口号,如果未指明端口号,则把socket连接到本地主机上一个可用的端口。laddr指明一个可用的本地地址。给出端口号时要保证不发生端口冲突,用数据报方式编写client/server程序时,无论在客户方还是服务方,首先都要建立一个DatagramSocket对象,用来接收或发送数据报,然后使用DatagramPacket类对象作为传输数据的载体。下面看一下DatagramPacket的构造方法 : DatagramPacket request=new DatagramPacket(m,m.length,aHost,serverPort); aSocket.send(request);byte[]buffer=new byte[1000] DatagramPacket reply=new DatagramPacket(buffer,buffer.length) 其中,buf中存放数据报数据,length为数据报中数据的长度,addr和port旨明目的地址,在接收数据前,应该采用上面的第一种方法生成一个DatagramPacket对象,给出接收数据的缓冲区及其长度。然后调用DatagramSocket 的方法receive()等待数据报的到来,receive()将一直等待,直到收到一个数据报为止。 发送数据前,也要先生成一个新的DatagramPacket对象,这时要使用上面的第二种构造方法,在给出存放发送数据的缓冲区的同时,还要给出完整的目的地址,包括IP地址和端口号。发送数据是通过DatagramSocket的方法send()实现的,send()根据数据报的目的地址来寻径,以传递数据报。 DatagramPacket reply=new DatagramPacket(buffer,buffer.length) 在构造数据报时,要给出InetAddress类参数。类InetAddress在包java.net中定义,用来表示一个Internet地址,我们可以通过它提供的类方法getByName()从一个表示主机名的字符串获取该主机的IP地址,然后再获取相应的地址信息。 程序代码: TCP客户端程序 import java.net.*; import java.io.*; public class TCPClient { public static void main(String args[]) { Socket s=null; try { int serverPort=7897; s=new Socket("localhost",serverPort); DataInputStream in=new DataInputStream(s.getInputStream()); DataOutputStream out=new DataOutputStream(s.getOutputStream()); BufferedReader stdIN=new BufferedReader(new InputStreamReader(System.in)); out.writeUTF(stdIN.readLine()); String data=in.readUTF(); System.out.println("Received:"+data); }catch(UnknownHostException e){ System.out.println("Sock:"+e.getMessage()); }catch(EOFException e){ System.out.println("EOF:"+e.getMessage()); }catch(IOException e){ System.out.println("IO:"+e.getMessage()); }finally{if(s!=null)try{s.close();}catch(IOException e){}} } } ********************************************************************* 服务器端程序: import java.net.*; import java.io.*; public class TCPServer { public static void main(String args[]){ try{ int serverPort=7896; ServerSocket listenSocket=new ServerSocket(serverPort); while(true){ Socket clientSocket=listenSocket.accept(); Connection c=new Connection(clientSocket); } }catch(IOException e){ System.out.println("Listen:"+e.getMessage()); } } } class Connection extends Thread{ DataInputStream in; DataOutputStream out; Socket clientSocket; public Connection(Socket aClientSocket){ try{ clientSocket=aClientSocket; in=new DataInputStream(clientSocket.getInputStream()); out=new DataOutputStream(clientSocket.getOutputStream()); this.start(); }catch(IOException e){ System.out.println("Connection:"+e.getMessage()); } } public void run(){ try{ String data=in.readUTF(); out.writeUTF(data); }catch(EOFException e){ System.out.println("EOF:"+e.getMessage()); }catch(IOException e){ System.out.println("IO:"+e.getMessage()); }finally{try{clientSocket.close();}catch(IOException e){}} } } ********************************************************************* UDP客户端程序 import java.net.*; import java.io.*; public class UDPClient { public static void main(String args[]){ DatagramSocket aSocket=null; try{ aSocket=new DatagramSocket(); DataInputStream sIN=new DataInputStream(System.in); BufferedInputStream bf=new BufferedInputStream(sIN); //String hello=String.valueOf(bf); byte[]m=new byte[1000]; bf.read(m); m="welcome to china".getBytes(); InetAddress aHost=InetAddress.getByName("127.0.0.1"); int serverPort=7892; DatagramPacket request=new DatagramPacket(m,m.length,aHost,serverPort); aSocket.send(request); byte[]buffer=new byte[1000]; DatagramPacket reply=new DatagramPacket(buffer,buffer.length); aSocket.receive(reply); System.out.println("Reply:"+new String(reply.getData()));
本文档为【JAVA-TCP流通信和UDP数据报通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_668482
暂无简介~
格式:doc
大小:31KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-12
浏览量:11