第9章 Java语言网络编程(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章Java语言网络编程黄淮学院计算机科学系王春华sunrisefe@126.com目录9.1Java网络编程概述9.2URL编程9.3Socket编程9.3Socket编程9.3.1Socket通信的一般结构9.3.2TCPSocket编程9.3.3UDPSocket编程9.3.1Socket通信的一般结构1.IP地址与InetAddress类2.Socket通信的一般结构复习:两台计算机如何通过网络通信?AB网络192.168.0.118192.168.0.10协议协议端口端口InetAddress类的对象不能通过构造方法创建,一般是通过其静态方法获取。IP地址与InetAddress类主机名可以是机器名(如java.sun.com),也可以是其IP地址的文本表示形式。IP地址与InetAddress类9.3.1Socket通信的一般结构1.IP地址与InetAddress类2.Socket通信的一般结构Socket通信的一般结构Socket中文译名是“套接字”,由主机号、端口号和协议名三部分主要内容组成。Socket是TCP/IP协议的编程接口,一个Socket由一个IP地址和一个端口号唯一确定。Socket有两种模式:流套接字(streamsocket)和数据报套接字(datagramsocket)。流套接字提供了面向连接的网络服务,采用TCP协议;数据报套接字则采用无连接的UDP协议。java.net包中提供了支持流套接字开发的ServerSocket与Socket类;支持数据报套接字开发的DatagramSocket类和DatagramPacket类。9.3Socket编程9.3.1Socket通信的一般结构9.3.2TCPSocket编程9.3.3UDPSocket编程9.3.2TCPSocket编程1.Socket类2.ServerSocket类3.TCPsocket通信过程Socket类Java.net包中的Socket类用在客户端,在客户端通过构造一个Socket类来建立与服务器的连接。数据流连接的优点是所有的数据都能准确、有序地送到接收方,缺点是速度较慢。数据报则相反。Socket类Socket类9.3.2TCPSocket编程1.Socket类2.ServerSocket类3.TCPsocket通信过程ServerSocket类ServerSocket类用在服务器端,它监听和响应客户端的连接请求,并接收客户端发送的数据,向客户端发送数据。ServerSocket类publicServerSocket(intport)throwsIOException创建绑定到特定端口的服务器套接字。端口0在所有空闲端口上创建套接字。传入连接指示(对连接的请求)的最大队列长度被设置为50。如果队列满时收到连接指示,则拒绝该连接。publicServerSocket(intport,intbacklog)throwsIOException利用指定的backlog创建服务器套接字并将其绑定到指定的本地端口号。端口号0在所有空闲端口上创建套接字。传入连接指示(对连接的请求)的最大队列长度被设置为backlog参数。如果队列满时收到连接指示,则拒绝该连接。ServerSocket类端口号代表了特定的服务,故必须保证此端口号没有被其他应用程序或服务占用。端口号的范围为0~65535,但0~1023为系统保留的端口号,分配给了特定的应用协议,如80代表HTTP服务、21代表FTP服务。编写网络程序时,应使用1024以上的端口。注意事项:无需指定IP地址或主机名,因为ServerSocket类是用于服务器端监听客户端的连接。ServerSocket类利用Socket类中getlnputStream()以及getOutputStream()方法从每端的套接字产生对应的InputStream和OutputStream对象,并将套接字数据流封装到缓冲区内以便进行两台机器之间的数据通讯。9.3.2TCPSocket编程1.Socket类2.ServerSocket类3.TCPsocket通信过程TCPsocket通信过程基于TCP的socket编程ServerServerSocket(intport)Socketaccept()OutputStreamSocket.getOutputStream()InputStreamSocket.getInputSream()Socket.close()ClientSocket(InetAddressaddress,intport)OutputStreamSocket.getOutputStream()InputStreamSocket.getInputStream()Socket.close()9.3Socket编程9.3.1Socket通信的一般结构9.3.2TCPSocket编程9.3.3UDPSocket编程UDPSocket编程C/S模式的两种通信方式UDPSocket编程DatagramSocket类DatagramPacket类UDPSocket通信过程另一种是无连接的通信方式,这种方式不建立连接,它是在客户机和服务器之间利用数据报来发送和接收相互独立的数据包,这一通信过程没有建立一个专门的通信管道,所以它在网络线路无效的情况下数据包也会被发送出去。在客户机和服务器之间传递信息有两种方式。一种是建立连接的通信方式,它首先需要建立连接,然后再传递数据,所有的数据是以包(packet)的形式按照一定的顺序发送和接收的,最后关闭连接,这一通信过程是由管道(channel)来保证的。在管道通信中,数据包中不包含有关包的源和目的信息,这些信息由建立的通信管道负责指明。而在无连接通信(数据报方式)中,所有的包都需要包含有该包的完整的源和目标信息,以便指明该数据包的走向。UDPSocket编程数据报是以UDP(UserDatagramProtocol用户数据报协议)为通信协议的一种通信方式,它为两台计算机之间提供一种非可靠的无连接投递报文的通信服务。由于这种通信方式不建立连接,所以它不能保证所有的数据都能准确、有序地送到目的地,它允许重传那些由于各种原因半路地丢失的数据。数据报的优点是通讯速度比较快,因此数据报服务一般用于传送非关键性的数据。如:时钟服务、图像、声音传播UDPSocket编程C/S模式的两种通信方式UDPSocket编程DatagramSocket类DatagramPacket类UDPSocket通信过程DatagramPacket类Java利用数据报模式在网络上发送和接收数据包需要使用java.net类库中的DatagramSocket类和DatagramPacket类。DatagramSocket类用于收发数据包,而DatagramPacket类则包含了具体的数据信息。DatagramPacket类是进行数据报通信的基础,它包含了需要传送的数据、数据报的长度、IP地址和端口号等。如果创建一个准备传出数据的DatagramPacket类,那么需要知道一个准需要确的因特网地址和端口号。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。DatagramPacket类获得及设置IP地址,包数据、包长度、包偏移量,端口号等,参见JDK帮助文档UDPSocket编程C/S模式的两种通信方式UDPSocket编程DatagramSocket类DatagramPacket类UDPSocket通信过程DatagramSocket类此类表示用来发送和接收数据报包的套接字。数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。DatagramSocket类DatagramSocket()构造方法是构造一个用于发送数据包的DatagramSocket类。DatagramSocket(intport)构造方法是构造一个用于接收数据包的DatagramSocket类,当构造完成DatagramSocket类后,就可以发送和接收数据包了。UDPSocket编程C/S模式的两种通信方式UDPSocket编程DatagramSocket类DatagramPacket类UDPSocket通信过程基于UDP的socket编程接收端(Server)发送端(Client)DatagramSocket(intport)DatagramSocket()DatagramPacket(byte[]buf,intlength)DatagramSocket.receive(DatagramPacketp)DatagramSocket.close()DatagramSocket.close()DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)DatagramSocket.send(DatagramPacketp)[例]客户机与服务器的通信小结端口和IP地址为网络通信提供了确定的地址标识,IP地址表示发送端的目的计算机,端口表明将数据包发送给目的计算机上的哪一个服务。套接字是网络驱动层提供给应用程序编程的接口和管理方法,用于处理数据接受与输出。Java语言访问网络资源是通过URL类来实现的,通过调用URL类的方法完成网络通信。套接字(Socket)提供网络上两台计算机之间交互通信的可靠连接,数据报为两台计算机之间提供一种快速、非可靠的无连接投递报文的通信服务。实验•课件和教材上的实例编译及相应修改•SOCKET聊天程序设计(参考备注)

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功