2019年第9章Java网络ppt课件

上传人:我*** 文档编号:149107045 上传时间:2020-10-24 格式:PPT 页数:58 大小:547KB
返回 下载 相关 举报
2019年第9章Java网络ppt课件_第1页
第1页 / 共58页
2019年第9章Java网络ppt课件_第2页
第2页 / 共58页
2019年第9章Java网络ppt课件_第3页
第3页 / 共58页
2019年第9章Java网络ppt课件_第4页
第4页 / 共58页
2019年第9章Java网络ppt课件_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《2019年第9章Java网络ppt课件》由会员分享,可在线阅读,更多相关《2019年第9章Java网络ppt课件(58页珍藏版)》请在金锄头文库上搜索。

1、第9章 网络通信,1,哈尔滨工业大学计算机系代亚非,主要内容,9.1网络编程的基础知识 9.2 基于TCP协议网络程序设计 9.3 基于UDP协议网络程序设计 9.4 JApplet编程 9.5基于分布模式的云计算系统,2,哈尔滨工业大学计算机系代亚非,9.1网络编程的基础知识,9.1.1IP地址和端口号 9.1.2套接字,3,哈尔滨工业大学计算机系代亚非,9.1.1IP地址和端口号,1、IP地址 网络中的每台计算机都必须有一个惟一的IP地址作为标识,这个数通常写作一组由“.”号分隔的十进制数。,4,哈尔滨工业大学计算机系代亚非,9.1.1IP地址和端口号,在Java包中,IP地址由一个称作I

2、netAddress的特殊的类来描述。这个类提供了三个用来获得一个InetAddress类的实例的静态方法。这三个方法是: getLocalHost( )返回一个本地主机的IP地址。 getByName(String host )返回对应于指定主机的IP地址。 getAllByName(String host )对于某个主机有多个IP地址(多宿主机)可用于得到一个IP地址数组。 此外,对一个InetAddress的实例可以使用: getAddress( )获得一个用字节数组形式表示的IP地址。 getHostName( )作反向查询,获得对应于某个IP地址的主机名。,5,哈尔滨工业大学计算机系

3、代亚非,【例9-1】通过域名查找IP地址。,核心语句: try InetAddress zsm_address; zsm_address =InetAddress.getByName(zsm8); str=思维论坛的IP地址为:+zsm_address.toString(); catch(UnknownHostException e) str=无法找到思维论坛; ,6,哈尔滨工业大学计算机系代亚非,【例9-2】查找本机IP地址。,核心语句: try InetAddress host_address; host_address=InetAddress.getLocalHost(); str=本机

4、的IP地址为:+host_address.toString(); catch(UnknownHostException e) str=本机没有安装网卡,无法找到IP。; ,7,哈尔滨工业大学计算机系代亚非,9.1.1IP地址和端口号,2、端口 我们用“端口号”来标识正在计算机上运行的进程(程序)。每个被发送的网络数据包也都包含有“端口号”,用于将该数据帧交给具有相同端口号的应用程序来处理。,8,哈尔滨工业大学计算机系代亚非,9.1.1IP地址和端口号,2、端口 端口号是一个整数,其取值范围为065535之间。由于同一台计算机上不能同时运行两个有相同端口号的进程。通常01023间的端口号作为保留

5、端口号,用于一些网络系统服务和应用,用户的普通网络应用程序应该使用1024以后的端口号,从而避免端口号冲突。,9,哈尔滨工业大学计算机系代亚非,9.1.1IP地址和端口号,3、TCP与UDP协议 在网络中,有两个常用的协议,它们是“传输控制协议”(Transmission Control Protocol,简称TCP)和“用户数据报协议”(User Datagram Protocol,简称:UDP)。 TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无差错的数据传输。 UDP是无连接通信协议,UDP不保证可靠数据的传输。,10,哈尔滨工业大学计算机系代亚非,9.1.2套接字,1、什么

6、是套接字 在TCP/IP通信协议中,套接字(Socket)就是IP地址与端口号的组合。,如图所示,IP地址193.14.26.7与端口号13组成一个套接字。,11,哈尔滨工业大学计算机系代亚非,9.1.2套接字,1、什么是套接字 网络通信,准确地说,不能仅说成是两台计算机之间在通信,而是两台计算机上执行的网络应用程序(进程)之间在收发数据。 当两个网络程序需要通信时,它们可以通过使用Socket类建立套接字连接。我们把呼叫方称为“客户端”,负责监听的一方称为“服务器端”。,12,哈尔滨工业大学计算机系代亚非,9.1.2套接字,2、客户端建立套接字Socket对象 在客户端使用socket类,建

7、立向指定服务器IP和端口号连接的套接字,其构造方法是: Socket(host_IP, prot); 其中host_IP是服务器的IP地址,prot是一个端口号。 Socket主要方法有: getInputStream( ):获得一个输入流,读取从网络线路上传送来的数据信息。 getOutputStream( ):获得一个输出流,用这个输出流将数据信息写入到网络“线路”上。,13,哈尔滨工业大学计算机系代亚非,9.1.2套接字,3、服务器端建立套接字Socket对象 在服务器端用ServerSocket类创建服务器Socket,ServerSocket类的构造方法为: ServerSocket

8、(int port); 创建ServerSocket实例是不需要指定IP地址的,ServerSocket总是处于监听本机端口的状态。 ServerSocket类的主要方法: Socket accept(); 该方法用于在服务器端的指定端口监听客户机发起的连接请求,并与之连接,其返回值为Socket对象。,14,哈尔滨工业大学计算机系代亚非,9.2 基于TCP协议网络程序设计,9.2.1客户机/服务器模式 9.2.2同时服务于多个客户的解决方案,15,哈尔滨工业大学计算机系代亚非,9.2.1客户机/服务器模式,利用Socket方式进行数据通信与传输,大致有如下步骤: (1)创建服务器端Serve

9、rSocket,设置建立连接的端口号。 (2)创建客户端Socket对象,设置绑定的主机名称或IP地址,指定连接端口号。 (3)客户机Socket发起连接请求。 (4)建立连接。 (5)取得InputStream和OutputStream。 (6)利用InputStream和OutputStream进行数据传输。 (7)关闭Socket和ServerSocket。,16,哈尔滨工业大学计算机系代亚非,17,哈尔滨工业大学计算机系代亚非,【例9-3】远程数据通信示例,本例由客户端程序和服务器程序两部分组成。,(1)客户端程序 (2)服务器端程序,18,哈尔滨工业大学计算机系代亚非,9.2.2同时

10、服务于多个客户的解决方案,1、启动多个服务程序 我们可以在服务器端启动多个服务程序,等待客户机的连接请求,每个服务程序处理一个客户机数据,它们只是监听的端口号不同。显然,这个方案耗用资源太多。,19,哈尔滨工业大学计算机系代亚非,9.2.2同时服务于多个客户的解决方案,2、应用多线程 在服务程序中应用多线程技术,不同的线程为不同的客户服务。主线程负责等待客户机的连接请求,各个线程负责网络连接,接收客户发送来的信息。,20,哈尔滨工业大学计算机系代亚非,【例9-4】服务程序应用多线程技术同时处理多个客户机的连接请求。,(1)客户端程序 (2)服务器端程序,21,哈尔滨工业大学计算机系代亚非,9.

11、3 基于UDP协议网络程序设计,9.3.1基于UDP协议的数据报套接字 9.3.2数据报的程序设计过程 9.3.3广播数据报套接字,22,哈尔滨工业大学计算机系代亚非,9.3.1基于UDP协议的数据报套接字,TCP协议通过socket套接字建立一条虚电路。,TCP协议的socket,server,client,Datagram数据报,server,client,UDP数据报的每个数据包要包含目的地址和端口号.,23,哈尔滨工业大学计算机系代亚非,在UDP中,要使用二个类: (1) DatagramSocket 类 发送时,用 send( )方法发送数据; 接收时,用 receive( )方法接

12、收数据。 (2) DatagramPacket 类 用于打包或拆包 发送时打包: 包由数据、接收地址、端口号组成; 接收时拆包: 取出包中的数据、接收地址、端口号。,24,哈尔滨工业大学计算机系代亚非,9.3.2数据报的程序设计过程,1、服务器端发出报文的步骤 (1)定义数据成员。 DatagramSocket socket; DatagramPacket packet; InetAddress address;(用来存放接收方的地址) int port; (用来存放接收方的端口号) (2)创建数据报文Socket对象。 try socket = new DatagramSocket(1111

13、); catch(java.SocketException e) socket 绑定到一个本地的可用端口,等待接收客户的请求。,25,哈尔滨工业大学计算机系代亚非,9.3.2数据报的程序设计过程,1、服务器端发出报文的步骤 (3)分配并填写数据缓冲区(一个字节类型的数组)。 byte Buf = new byte256; 存放从客户端接收的请求信息. (4)创建一个DatagramPacket。 packet = new DatagramPacket(Buf数组, 256字节长度); 用来从socket接收数据,它只有两个参数。 (5)服务器阻塞。 socket.receive(packet)

14、; 在客户的请求报道来之前一直等待。,26,哈尔滨工业大学计算机系代亚非,9.3.2数据报的程序设计过程,1、服务器端发出报文的步骤 (6)从到来的包中得到地址和端口号。 InetAddress address = packet.getAddress(); int port = packet.getPort(); (7)将数据送入缓冲区。来自文件,或键盘输入。 (8)建立报文包,用来从socket上发送信息。 Packet = new DatagramPacket(buf, buf.length, address, port); (9)发送数据包。 socket.send(packet); (

15、10)关闭socket。 socket.close();,27,哈尔滨工业大学计算机系代亚非,9.3.2数据报的程序设计过程,2、客户端接收包的步骤 (1)定义数据成员。 int port; InetAddress address; DatagramSocket socket; DatagramPacket packet; byte sendBuf = new byte256; (2)建立socket。 socket = new DatagramSocket(); (3)向服务器发出请求报文。 address = InetAddress.getByName(args0); port = par

16、seInt(args1); packet = new DatagramPacket(sendBuf, 256, address, port); socket.send(packet);,28,哈尔滨工业大学计算机系代亚非,9.3.2数据报的程序设计过程,2、客户端接收包的步骤 (4)客户机等待应答。 packet = new DatagramPacket(sendBuf, 256); socket.receive(packet);(如果没有到就一直等待,因此程序要设置时间限度) (5)处理接收到的数据。 String received = new String(packet.getData(), 0, packet.getLength(); System.out.println(received);,29,哈尔滨工业大学计算机系代亚非,数据报工作过程,建立数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号