资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,10,章,Java,网络,编程,用,Java,实现计算机网络的底层通信,就是用,Java,程序实现网络通信协议所规定的功能和操作。网络通信协议有很多,这里只讨论两个具体协议,(Tcp,Udp),的,Java,编程。,用,Java,实现底层网络通信,通信的双方,(,端点,),是谁?,网络上不同计算机上的不同程序,(,进程,),。,如何表示通信端点?,Socket(,主机名或,Ip,地址,端口号,),InetAddress,两种不同的通信方式,面向连接的通信,(,依据,TCP,协议,),打电话,面向数据报通信,(,依据,UDP,协议,),发信收信,面向连接的通信,在通信开始之前由通信双方确认身份并建立一条专用的连接通道,通过这条通道传送数据进行通信,通信结束后将连接拆除。,面向连接的通信过程,涉及到的类和方法,服务器在哪个端口,(1-65535),提供监听服务?,SeverSocket myListener=new SeverSocket(8000);,随时监听可能的,Client,请求,返回客户端点。,Socket LinkSocket=myListener.accept(),Client,要连接的服务器端点,Socket mySocket=new Socket(ip(hostname),port),怎样传输数据?,LinkSocket(mySocket).getInputStream();,LinkSocket(mySocket).getOutputStream();,常用语句,(,服务器端,),ServerSocket ss = new ServerSocket(7456);,Socket so = ss.accept();/,如果客户不连接会停在这里,InputStream is = so.getInputStream();,OutputStream os = so.getOutputStream();,BufferedReader br =,new BufferedReader(new InputStreamReader(is);,PrintStream ps = new PrintStream(os);,String temp = br.readLine();,ps.println(temp);,ps.close();,br.close();,so.close();,ss.close();,常用语句,(,客户端,),Socket so = new Socket(127.0.0.1,7456);,InputStream is = so.getInputStream();,OutputStream os = so.getOutputStream();,BufferedReader br =,new BufferedReader(new InputStreamReader(is);,PrintStream ps = new PrintStream(os);,InputStreamReader isr = new InputStreamReader(System.in);,BufferedReader key = new BufferedReader(isr);,String temp = key.readLine();,key.close();,ps.println(temp);,ps.close();,br.close();,so.close();,例,Ex1,熟悉客户端,服务器端面向连接通信的过程。,Socket,通信典型例子,Version1-Version4,两种不同的通信方式,面向连接的通信,(,依据,TCP,协议,),打电话,面向数据报通信,(,依据,UDP,协议,),发信收信,面向数据报通信,是一种无连接的通信方式,数据以独立的包为单位发送,不保证传送顺序和内容的准确性,无须建立、拆除连接,直接将信息打包传向指定的目的地。,数据报的发送过程,数据报的发送过程可简单表述为如下步骤。,(1),创建,DatagramPacket,对象包含如下信息:, 要发送的数据,(,字节数组,),;, 指定发送数据的长度;, 发送目的地的主机,IP,地址和目的端口号。,(2),在指定的或可用的本机端口创建,DatagramSocket,对象。,(3),调用该,DatagramSocket,的,send( ),方法,以,DatagramPacket,对象为参数发送数据报。,数据报的接受过程,数据报的接收过程可简单表述为如下步骤:,(1),创建,DatagramPacket,对象包含如下信息:, 接收数据的字节数组;, 接收数据的长度。,(2),在指定的或可用的本机端口创建,DatagramSocket,对象。,(3),调用,DatagramSocket,对象的,receive( ),方法,以,DatagramPacket,对象为参数接收数据报。,涉及到的类和方法,(1) DatagramPacket,类,DatagramPacket(byte ibuf, int ilength);,DatagramPacket(byte ibuf, int ilength,InetAddress iaddr, int iport);,取得数据报文内容:,byte getData(),报文来源地或目的地:,InetAddrss,getAddress(),(2)DatagramSocket,类,DatagramSocket( );,DatagramSocket(int port);,DatagramSocket(int port, InetAddress localAddr);,例,Ex2,熟悉客户端,服务器端面向数据报通信的过程。,例,Ex3,用数据报通信方式实现点对点通信,
展开阅读全文