为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java网络编程

2010-10-30 42页 ppt 423KB 57阅读

用户头像

is_885287

暂无简介

举报
java网络编程nullJava网络编程*Java网络编程 Java与网络*Java与网络Java语言取得成功的领域之一就是网络 (其他语言)数页代码---->(Java)一条语句 TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层). 大多数基于internet的应用程序被看作TCP/IP协议的上一层. 如 : ftp, http, smtp, pop3, telnet, nntp等 IP地址:TCP/IP网络中的每台计算机都有唯一的地址--IP地址...
java网络编程
nullJava网络编程*Java网络编程 Java与网络*Java与网络Java语言取得成功的领域之一就是网络 (其他语言)数页代码---->(Java)一条语句 TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层). 大多数基于internet的应用程序被看作TCP/IP协议的上一层. 如 : ftp, http, smtp, pop3, telnet, nntp等 IP地址:TCP/IP网络中的每台计算机都有唯一的地址--IP地址. 在Java中,有一个用来存储internet地址的类叫InetAddress.网络层次*网络层次4层网络结构:传输层的两个基本协议*传输层的两个基本协议1 TCP协议:确保以发送时的顺序接受,丢包重新传递,数据对于连接太快TCP会调整速度等 2UDP协议: 允许接受方检测被破坏的包,不保证这些包正确的顺序传输。实时的音频或视频应用程序经常使用。如果UDP有纠错功能一般由应用层来实现,如TFTP等。UDP本身没有此功能Java网络编程*Java网络编程Java的网络编程是建立在传输层之上的,我们可以创建自己的应用层协议。Java仅支持TCP和UDP。(ICMP不支持) Java已经给我们提供好了基于传输层协议的类(Stream Socket和 Datagram Socket) Java不能直接发IP数据包TCP协议的实现*TCP协议的实现Socket是实现TCP协议的基本工具,Socket对程序员掩盖了网络底层实现的细节。如:纠错,重传,网络地址等 Socket是网络上运行的程序之间双向通信链路的最后终结点 IP与端口的组合得出一个套接字,可以完全分辨internet上运行的程序Socket概念*Socket概念端口号:TCP/IP协议为每种服务定义了一个端口,当一台计算机上运行不同服务器程序时,根据端口号不同提供相应的服务. 端口号不是计算机上的物理连接器,它只是具有软件意义的假想端口 Socket的功能*Socket的功能1连接远程机器 2发送数据 3接受数据 4关闭连接 5绑定端口 6监听入站数据 7在所绑定得端口上接受来自远程的连接Socket类*Socket类Socket类用代码通过主机操作系统的本地TCP栈进行通信。 Socket为用户提供的接口是流。Socket类*Socket类 Socket类(续)*Socket类(续)程序员只需把传输内容转化为流客户端Socket*客户端Socket构造函数: public Socket(String host,int port) throws unknownHostException,IOException Socket socket=new Socket(“time.nist.gov ”,80); 含义: 1 创建一个socket对象 2尝试连接主机 主机名不存在或服务器没运行unknownHostException 其他原因抛: IOException 客户端Socket(续)*客户端Socket(续)时间协议的使用*时间协议的使用使用Socket完成一些应用层的协议。 时间协议的使用*时间协议的使用客户端Socket(续)*客户端Socket(续)Socket使用之后要注意关掉.一般来说socket确实会在两个流的一个关闭后或在被垃圾回收时自动关闭。但是对于敏感的程序,在垃圾回收介入之前,系统会很快到达能打开的socket上限。尤其是跟很多硬件设备打交道的软件系统。客户端Socket(续)*客户端Socket(续)半关闭Socket*半关闭Socket close()方法同时关闭Socket的输入和输出 但JDK提供了shutdownInput()和shutdownOutput的方法Socket异常*Socket异常BindException没有权限使用Socket,想使用的端口被别的应用占用 ConnectException主机忙或没有监听该端口的进程 NoRouteHostException表示连接超时 ProtocolException表示网络接受的数据违反TCP/IP规范ServerSocket*ServerSocket服务器Socket等待连接而客户端Socket发起连接。一旦ServerSocket建立起来连接,服务器就是用一个正常的Socket对客户端发送数据。ServerSocket基本*ServerSocket基本流程ServerSocket的构造函数*ServerSocket的构造函数构造函数: public ServerSocket(int port)throws BindException,IOException ServerSocket socket=new ServerSocket (80); 含义: 创建一个server socket对象,服务的端口是80,如果port设为0或者null Java会随机选一个未占用的port 如果端口已经被其他应用程序占用抛出BindException ServerSocket的构造函数(续)*ServerSocket的构造函数(续)public ServerSocket(int port,int queueLength)throws BindException,IOException Queue表示入站连接请求队列的长度,这个长度必须小于操作系统所允许的最大长度 public ServerSocket()throws IOException 没有端口创建是没有意义的,因为客户端不知道如何连接过去 ServerSocket ss=new ServerSocket(); SocketAddress http=new InetSocketAddress(80); ss.bind(http); ServerSocket的监听方法*ServerSocket的监听方法accept()监听客户端的连接。在未连接的时候accept()是阻塞的,他会停止执行流并等待简单的日期时间服务器*简单的日期时间服务器UDP的实现*UDP的实现 UDP的实现类DatagramPacket和DatagramSocket. DatagramPacket的作用:将应用层的数据字节准变为UDP的传输单位datagramUDP的实现(续)*UDP的实现(续)DatagramSocket与TCP的Socket不同, UDP没有连接的概念,没有TCP那样的服务器Socket和客户端Socket的概念。DatagramSocket既可以发又可以收,可以面对多个DatagramSocket进行收发,不像TCP协议中的1 on 1的关系,服务器没有必要创建Socket与客户端Socket通讯。TCP通讯与UDP通讯对比*TCP通讯与UDP通讯对比TCP通讯与UDP通讯对比*TCP通讯与UDP通讯对比DatagramPacket类*DatagramPacket类DaragramPacket转化成的Datagram已经与IP层的数据包非常接近,包含了目标地址 而TCP的数据片需要Socket告诉其目标地址,然后组成IP数据包。DatagramPacket类*DatagramPacket类接受和发送数据包的构造函数是不同的: 1 接受数据包: public DatagramPacket(byte[] buffer,int length) 两个参数1 byte[] buffer表示接受数据包的数组,length表示这个数组的长度。 2发送数据包: public DatagramPacket(byte[] data,int length,InetAddress destination,int port) 除了包括接受的参数外还包括目标地址和端口DatagramPacket类(续)*DatagramPacket类(续)创建一个DatagramPacket: DatagramSocket类*DatagramSocket类与DatagramPacket类似发送与接受Socket只是构造函数不相同 发送Socket对象 DatagramSocket client=new DatagramSocket() 由于发送无需关心发送端口所以操作系统会自动分配一个端口发送时服务器的端口已经写在了DatagramPacket中了 接受Socket对象 DatagramSocket server=new DatagramSocket(port) 由于需要监听客户端Socket所以必须指定port DatagramSocket类(续)*DatagramSocket类(续)DatagramSocket类(续)*DatagramSocket类(续)DatagramSocket类(续)*DatagramSocket类(续)DatagramSocket的对象用完之后也是要关闭,如果等到垃圾回收关闭,有可能会造占满所有允许的Socket数。 TCP的Socket和UDP的Socket可以共用一个端口两种协议是毫不相干的且端口也只是个逻辑概念组播Socket*组播Socket与传统传播的区别: 组播的使用*组播的使用采用MulticastSocket用法相近,但多了4个动作: 1加入组播组 2向组播组发送数据 3接受组播组的数据 4离开组播组组播接受实例:*组播接受实例:有用的工具类—InetAddress类*有用的工具类—InetAddress类Java对于IP地址的高级表示。它包含了主机名和IP地址,我们知道了其中一个信息可以得到另一个信息。 3个构造函数: 1 public static InetAddress getByName(String hostName) throws UnknownHostException 2 public static InetAddress[] getAllByName(String hostName) throws UnknownHostExceptionInetAddress类(续)*InetAddress类(续)public static InetAddress[] getLocalhost(String hostName) throws UnknownHostException 通过DNS得到IP地址和hostname的转换 InetAddress类应用*InetAddress类应用
/
本文档为【java网络编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索