Java程序设计-14-网络编程.ppt
《Java程序设计-14-网络编程.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-14-网络编程.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JavaJava程序设计程序设计第第1414章章 网络编程网络编程 学习目标学习目标网络编程基础概念了解包中的一些常用类的使用方法实现基于TCP协议的客户/服务器程序开发实现基于UDP协议的网络通信初步学习URL资源访问技术14.1 14.1 网络基础网络基础1 主机名和IP地址IP地址就是唯一标识计算机等网络设备的网络地址u如:166.111.136.3,202.117.30.79主机名(hostname):网络地址的助记名,按照域名进行分级管理。如:在Internet上IP地址和主机名是一一对应的,通过域名解析可以由主机名得到机器的IP 2端口(port)通常一台主机上总是有很多个进程(运
2、行中的程序)需要网络资源进行网络通讯。网络通讯的对象准确的讲不是主机,而应该是主机中运行的进程。具体来讲,端口号(port number)就是网络通信时同一机器上的不同进程的标识。TCP/IP系统中的端口号是一个16位的数字,它的范围是065535。u1)公认端口:从0到1023u2)注册端口:从1024到49151u3)动态和/或私有端口客户和服务器必须事先约定所使用的端口。如果系统两部客户和服务器必须事先约定所使用的端口。如果系统两部分所使用的端口不一致,那就不能进行通信。分所使用的端口不一致,那就不能进行通信。3 使用端口的一些限制从0到1023,它们紧密绑定于一些服务。通常这些端口的通
3、讯明确表明了某种服 务的协议。如21对应的是FTP服务,23则是提供的Telnet服务。除非要和那些服务之一进行通信(例如Telnet,SMTP邮件和FTP等),否则在程序中不应该使用它们。例如:80端口实际上总是HTTP通信中Web服务的端口号。从49152到65535主要用于动态和/或私有端口。理论上,不应为服务分配这些端口14.1.2 14.1.2 传输协议传输协议 协议就是通讯双方互相约定的传送信息的格式定义。目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。包含:uTCPuUDPTCP和UDP是底层的网络通信协议,进行应用层程序开发时,需要考虑自定义的通信协议。1
4、4.1.2 14.1.2 传输协议传输协议(cont.)(cont.)1 TCP协议TCP是Transmission Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方各有一个socket,两个socket之间必须建立连接,以便在TCP协议的基础上进行通信。14.1.2 14.1.2 传输协议传输协议(cont.)(cont.)2 UDP协议UDP是User Datagram Protocol的简称,是一种无连接的协议,也不进行差错及流量的控制。因此UDP提供的服务是不可靠的,基于UDP的应用程序可根
5、据情况自己承担可靠性方面的工作14.1.2 14.1.2 传输协议传输协议(cont.)(cont.)3 TCP和UDP的差异u使用UDP时,无需要建立发送方和接收方的连接;TCP中多了一个连接建立的时间。u使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。而TCP没有这方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。uUDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。而TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。讨论:讨论:既然有了保证可靠传输的TCP协议,为什么还要非可靠
6、传输的UDP协议呢?14.3 14.3 包包DatagramPacket 和和DatagramSocket两个类构成了两个类构成了UDP开发的基础开发的基础ServerSocket 和和Socket,两个类构成了,两个类构成了TCP开发的基础开发的基础InetAddress类用于表示互联网协议类用于表示互联网协议(IP)地址地址通过程序获得网络地址通过程序获得网络地址import .*;public class GetLocalHostTest public static void main(String args)InetAddress myIP=null;/声明声明IP地址对象变量地址对象
7、变量 try myIP=InetAddress.getLocalHost();/获得本机获得本机IP地址地址 /下面的语句显示了获得指定主机名的下面的语句显示了获得指定主机名的IP地址的方法地址的方法 /myIP=InetAddress.getByName();System.out.println(“主机地址:主机地址:+myIP.getHostAddress();System.out.println(HostName is+myIP.getHostName();catch(UnknownHostException e)/忽略异常忽略异常 14.2 14.2 基于基于TCPTCP的网络编程的网
8、络编程网络上的两个程序通过一个双向的通讯连接实现数据的可靠交换,这个双向链路的一端称为一个Socket。Socket是TCP/IP协议的一个十分流行的编程界面,通常用来实现客户方和服务方的连接。一个Socket实例由一个IP地址和一个端口号唯一确定。Socket是一种用于网络通信的低层开发接口,借助于通信两端的应用程序(实际上是Socket)可以利用输入输出流完成数据交换。14.2.1 14.2.1 客户和服务器客户和服务器dialing基于基于SocketSocket的通信过程的通信过程创建创建ServerSocketaccept()?yesNcloseclosesocketsocketMo
9、rningwelcome服务器端程序客户端程序14.2.2 14.2.2 创建服务器端创建服务器端SocketSocket作用u运行在主机上的服务程序提供了面向客户端的特定应用,例如HTTP服务、FTP服务等,读者也可以创建属于自己的特定服务。为了达到这一目的,首先就需要创建一个服务器套接字-ServerSocket,注册到主机系统,开始提供侦听服务。构造函数uServerSocket(int port);uServerSocket(int port,int backlog);uServerSocket(int port,int backlog,InetAddress bindAddr)创建、
10、监听示意代码创建、监听示意代码 ServerSocket serverSocket=null;try serverSocket=new ServerSocket(6666);catch(IOException e)System.exit(1);Socket clientSocket=null;try clientSocket=serverSocket.accept();catch(IOException e)System.exit(1);提供在6666端口上的侦听服务accept()方法是一个阻塞式方法,直到收到一个连接请求后,程序将会继续运行下去clientSocket对应于客户端的sock
11、et,获得后可以利用它和客户端通信表表11-1 ServerSocket类的主要方法类的主要方法accept()accept()侦侦听并接受到此套接字的听并接受到此套接字的连连接接bind(SocketAddress bind(SocketAddress endpoint)endpoint)将将 ServerSocket ServerSocket 绑绑定到特定地址(定到特定地址(IP IP 地址和端口号)地址和端口号)close()close()关关闭闭此套接字此套接字getChannel()getChannel()返回与此套接字关返回与此套接字关联联的惟一的惟一 ServerSocketCh
12、annel ServerSocketChannel 对对象(如果有)。象(如果有)。getInetAddress()getInetAddress()返回此服返回此服务务器套接字的本地地址器套接字的本地地址getLocalPort()getLocalPort()返回此套接字在其上返回此套接字在其上侦侦听的端口听的端口getLocalSocketAddrgetLocalSocketAddress()ess()返回此套接字返回此套接字绑绑定的端点的地址,如果尚定的端点的地址,如果尚未未绑绑定定则则返回返回 nullnullisClosed()isClosed()返回返回 ServerSocket S
13、erverSocket 的关的关闭闭状状态态14.2.3 14.2.3 创建客户端创建客户端Socket Socket 作用u连接到服务器socket,以便通信构造函数uSocket(InetAddress address,int port);uSocket(String host,int prot);uSocket(String host,int port,InetAddress localAddr,int localPort)uSocket(InetAddress address,int port,InetAddress localAddr,int localPort)客户端访问服务器客户
14、端访问服务器Socket client=null;try client=new Socket(127.0.0.1,6666);/client=new Socket(,6666);catch(UnknownHostException e)System.exit(1);catch(IOException e)System.exit(1);/此处可以添加通信代码此处可以添加通信代码client.close();希望连接的服务器所在主机地址希望连接的服务器程序监听端口表表11-2 Socket类的主要方法类的主要方法bind(SocketAddress bind(SocketAddress endpo
15、int)endpoint)将将 套套节节字字绑绑定到特定地址(定到特定地址(IP IP 地址和端口号)地址和端口号)close()close()关关闭闭此套接字此套接字getLocalPort()getLocalPort()返回此套接字在其上返回此套接字在其上侦侦听的端口听的端口getInputStream()getInputStream()返回此套接字的返回此套接字的输输入流入流,来自来自对对端的端的输输出出getOutputStream()getOutputStream()返回此套接字的返回此套接字的输输出流,可以向出流,可以向对对端端输输出数据出数据getInetAddress()get
16、InetAddress()返回此套接字返回此套接字连连接的地址接的地址getPort()getPort()返回此套接字返回此套接字连连接到的接到的远远程端口程端口getRemoteSocketAddress()getRemoteSocketAddress()返回此套接字返回此套接字连连接的端点的地址,如果未接的端点的地址,如果未连连接接则则返返回回 nullnullisClosed()isClosed()返回返回 套套节节字的关字的关闭闭状状态态14.2.4 14.2.4 通信过程通信过程在上面创建服务器端和客户端Socket的过程中,两端都需要一个Socket对象。双方的通信就是利用Sock
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 14 网络 编程
限制150内