java语言网络编程.ppt

上传人:小飞机 文档编号:5436229 上传时间:2023-07-06 格式:PPT 页数:42 大小:327.49KB
返回 下载 相关 举报
java语言网络编程.ppt_第1页
第1页 / 共42页
java语言网络编程.ppt_第2页
第2页 / 共42页
java语言网络编程.ppt_第3页
第3页 / 共42页
java语言网络编程.ppt_第4页
第4页 / 共42页
java语言网络编程.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《java语言网络编程.ppt》由会员分享,可在线阅读,更多相关《java语言网络编程.ppt(42页珍藏版)》请在三一办公上搜索。

1、1,Java网络编程,2,Java与网络,Java语言取得成功的领域之一就是网络(其他语言)数页代码-(Java)一条语句TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).大多数基于internet的应用程序被看作TCP/IP协议的上一层.如:ftp,http,smtp,pop3,telnet,nntp等IP地址:TCP/IP网络中的每台计算机都有唯一的地址-IP地址.在Java中,有一个用来存储internet地址的类叫InetAddress.,3,网络层次,4层网络结构:,4,传输层的两个基本协议,

2、1 TCP协议:确保以发送时的顺序接受,丢包重新传递,数据对于连接太快TCP会调整速度等2UDP协议:允许接受方检测被破坏的包,不保证这些包正确的顺序传输。实时的音频或视频应用程序经常使用。如果UDP有纠错功能一般由应用层来实现,如TFTP等。UDP本身没有此功能,5,Java网络编程,Java的网络编程是建立在传输层之上的,我们可以创建自己的应用层协议。Java仅支持TCP和UDP。(ICMP不支持)Java已经给我们提供好了基于传输层协议的类(Stream Socket和 Datagram Socket)Java不能直接发IP数据包,6,TCP协议的实现,Socket是实现TCP协议的基本

3、工具,Socket对程序员掩盖了网络底层实现的细节。如:纠错,重传,网络地址等Socket是网络上运行的程序之间双向通信链路的最后终结点IP与端口的组合得出一个套接字,可以完全分辨internet上运行的程序,7,Socket概念,端口号:TCP/IP协议为每种服务定义了一个端口,当一台计算机上运行不同服务器程序时,根据端口号不同提供相应的服务.端口号不是计算机上的物理连接器,它只是具有软件意义的假想端口,8,Socket的功能,1连接远程机器2发送数据3接受数据4关闭连接5绑定端口6监听入站数据7在所绑定得端口上接受来自远程的连接,9,Socket类,Socket类用代码通过主机操作系统的本

4、地TCP栈进行通信。Socket为用户提供的接口是流。,10,Socket类,11,Socket类(续),程序员只需把传输内容转化为流,12,客户端Socket,构造函数:public Socket(String host,int port)throws unknownHostException,IOExceptionSocket socket=new Socket(“time.nist.gov”,80);含义:1 创建一个socket对象2尝试连接主机主机名不存在或服务器没运行unknownHostException其他原因抛:IOException,13,客户端Socket(续),14,时

5、间协议的使用,使用Socket完成一些应用层的协议。,15,时间协议的使用,16,客户端Socket(续),Socket使用之后要注意关掉.一般来说socket确实会在两个流的一个关闭后或在被垃圾回收时自动关闭。但是对于敏感的程序,在垃圾回收介入之前,系统会很快到达能打开的socket上限。尤其是跟很多硬件设备打交道的软件系统。,17,客户端Socket(续),18,半关闭Socket,close()方法同时关闭Socket的输入和输出但JDK提供了shutdownInput()和shutdownOutput的方法,19,Socket异常,BindException没有权限使用Socket,想

6、使用的端口被别的应用占用ConnectException主机忙或没有监听该端口的进程NoRouteHostException表示连接超时ProtocolException表示网络接受的数据违反TCP/IP规范,20,ServerSocket,服务器Socket等待连接而客户端Socket发起连接。一旦ServerSocket建立起来连接,服务器就是用一个正常的Socket对客户端发送数据。,21,ServerSocket基本流程,22,ServerSocket的构造函数,构造函数:public ServerSocket(int port)throws BindException,IOExcep

7、tionServerSocket socket=new ServerSocket(80);含义:创建一个server socket对象,服务的端口是80,如果port设为0或者null Java会随机选一个未占用的port如果端口已经被其他应用程序占用抛出BindException,23,ServerSocket的构造函数(续),public ServerSocket(int port,int queueLength)throws BindException,IOExceptionQueue表示入站连接请求队列的长度,这个长度必须小于操作系统所允许的最大长度public ServerSocke

8、t()throws IOException没有端口创建是没有意义的,因为客户端不知道如何连接过去ServerSocket ss=new ServerSocket();SocketAddress http=new InetSocketAddress(80);ss.bind(http);,24,ServerSocket的监听方法,accept()监听客户端的连接。在未连接的时候accept()是阻塞的,他会停止执行流并等待,25,简单的日期时间服务器,26,UDP的实现,UDP的实现类DatagramPacket和DatagramSocket.DatagramPacket的作用:将应用层的数据字节

9、准变为UDP的传输单位datagram,27,UDP的实现(续),DatagramSocket与TCP的Socket不同,UDP没有连接的概念,没有TCP那样的服务器Socket和客户端Socket的概念。DatagramSocket既可以发又可以收,可以面对多个DatagramSocket进行收发,不像TCP协议中的1 on 1的关系,服务器没有必要创建Socket与客户端Socket通讯。,28,TCP通讯与UDP通讯对比,29,TCP通讯与UDP通讯对比,30,DatagramPacket类,DaragramPacket转化成的Datagram已经与IP层的数据包非常接近,包含了目标地址

10、而TCP的数据片需要Socket告诉其目标地址,然后组成IP数据包。,31,DatagramPacket类,接受和发送数据包的构造函数是不同的:1 接受数据包:public DatagramPacket(byte buffer,int length)两个参数1 byte buffer表示接受数据包的数组,length表示这个数组的长度。2发送数据包:public DatagramPacket(byte data,int length,InetAddress destination,int port)除了包括接受的参数外还包括目标地址和端口,32,DatagramPacket类(续),创建一个D

11、atagramPacket:,33,DatagramSocket类,与DatagramPacket类似发送与接受Socket只是构造函数不相同发送Socket对象DatagramSocket client=new DatagramSocket()由于发送无需关心发送端口所以操作系统会自动分配一个端口发送时服务器的端口已经写在了DatagramPacket中了接受Socket对象DatagramSocket server=new DatagramSocket(port)由于需要监听客户端Socket所以必须指定port,34,DatagramSocket类(续),35,DatagramSocke

12、t类(续),36,DatagramSocket类(续),DatagramSocket的对象用完之后也是要关闭,如果等到垃圾回收关闭,有可能会造占满所有允许的Socket数。TCP的Socket和UDP的Socket可以共用一个端口两种协议是毫不相干的且端口也只是个逻辑概念,37,组播Socket,与传统传播的区别:,38,组播的使用,采用MulticastSocket用法相近,但多了4个动作:1加入组播组2向组播组发送数据3接受组播组的数据4离开组播组,39,组播接受实例:,40,有用的工具类InetAddress类,Java对于IP地址的高级表示。它包含了主机名和IP地址,我们知道了其中一个

13、信息可以得到另一个信息。3个构造函数:1 public static InetAddress getByName(String hostName)throws UnknownHostException2 public static InetAddress getAllByName(String hostName)throws UnknownHostException,41,InetAddress类(续),public static InetAddress getLocalhost(String hostName)throws UnknownHostException通过DNS得到IP地址和hostname的转换,42,InetAddress类应用,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号