《Java网络编程基础.ppt》由会员分享,可在线阅读,更多相关《Java网络编程基础.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java网络编程主要内容p网络编程的基本概念p基于TCP的网络编程(或称为基于Socket(套接字)网络编程)p基于UDP的网络编程Java网络程序设计基础p网络编程的目的是指直接或间接地通过网络协议与其他计算机进行通信。p网络编程中有两个主要的问题,一个是如何准确的定位网络上的主机,另一个就是找到主机后如何可靠高效的进行数据传输。p在TCP/IP协议中IP层主要负责网络主机的定位,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。C/S结构pClient/Server p网络程序的通信双
2、方:一方作为服务器(Server)等待客户(Client)提出请求并予以响应。客户则在需要服务时向服务器提出申请。p服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。结构图及相关概念ClientServiceServerpIP地址:标识计算机等网络设备的网络地址,由四个8位的二进制数组成p主机名(hostname):网络地址的助记名,按照域名进行分级管理。如:p端口号(port):网络通信时同一机器上的不同进程(运行的程序)的标识 p服务类型(service):网络的各种服务,它们使用不同的端
3、口号。如:http(80),telnet(23),ftp(21),smtp(25)p通常一台主机上总是有很多个进程需要网络资源进行网络通讯。网络通讯的对象准确的讲不是主机,而应该是主机中运行的进程。这时候光有主机名或IP地址来标识这么多个进程显然是不够的。端口号就是为了在一台主机上提供更多的网络资源而采取得一种手段,也是TCP层提供的一种机制。p只有通过主机名或IP地址和端口号的组合才能唯一的确定网络通信中的进程。p服务类型(Service)是那些已经被标准化了的网络应用(如HTTP、FTP等等)。程序员可以编写自己的基于网络的服务器,但不能被称作标准的服务类型,也不能使用被标准服务类型占用的
4、端口号。p端口号为一个065535之间的整数,而01023已被系统预先占用,程序员编写网络程序应使用102465535的端口来进行通信编写TCP的网络程序p建立客户与服务器之间的连接 指的是客户进程与服务器进程之间的逻辑连接,用Socket(套接字)实现p实现客户与服务器之间的通信指的是客户进程与服务器进程之间的数据传递,用Socket的流对象实现p使用Socket进行TCP网络编程,一般包含以下四个基本步骤:(1)创建Socket,实现连接(2)打开连接到Socket的输入/输出流(3)对Socket进行读/写操作(4)关闭Socket(1)建立连接:Socketpsocket原指插座,用于
5、连接电器与电线;p与此类似,网络程序中的Socket(套接字)是实现客户与服务器之间的逻辑连接。套接字套接字套接字套接字ClientServerSocket的组成:IP地址 和 端口号 IP地址:用于标识网络上的主机 Port:用于标识运行的程序pJava中的TCP网络编程就是指利用Socket来编写网络通信程序连接过程服务器套接字服务器套接字服务器套接字服务器套接字客户端套接字客户端套接字试图连接服务器套接字服务器套接字客户端套接字客户端套接字套接字套接字连接123响应请求,建立套接字ServerSocketpServerSocket类用于表示服务器套接字p服务器套接字通过指定的端口来等待请
6、求连接的客户套接字,端口应于客户端的端口一致p若接受客户请求,则创建一个Socket套接字以与客户端连接pServerSocket的常用构造方法:ServerSocket(int port)throws IOException:使用指定的端口创建服务器套接字ServerSocket(int port,int backlog)throws IOException:backlog用于指定队列的大小(代表服务器可同时接收的连接请求数),用于多台客户机同时提出连接请求的情况pServerSocket的常用方法:Socket accept()throws IOException:等待客户端的请求,若连接
7、则创建套接字void close()throws IOException:关闭服务器套接字p例:ServerDemo1.java客户端套接字SocketpSocket的常用构造方法:Socket(String host,int port)throws UnknownHostException,IOException:创建连接指定服务器(主机、端口)的套接字Socket(InetAddress address,int port)throws UnknownHostException,IOException:创建连接指定服务器的套接字,address表服务器IP地址对象p例如:try Socket
8、 sc=new Socket(“127.0.0.1”,4321);catch(IOException)p注意要进行异常处理pSocket的常用方法:InetAddress getInetAddress():获取被连接的服务器的地址int getPort():获取端口号void shutdownInput()throws IOExceptionvoid shutdownOutput()throws IOException:关闭输入/输出流p例:ClientDemo1.javap用ClientDemo1的套接字连接之前ServerDemo1所创建的服务器套接字p运行注意:先运行服务器程序,再运行客
9、户机程序利用Socket上的IO流进行数据传递输入流输入流输出流输出流输入流输入流输出流输出流套接字套接字读读写写读读写写ClientServer(2)打开Socket的IO流p可以采用Socket的下列方法:InputStream getInputStream()throws IOException:获取套接字的输入流 OutputStream getOutputStream()throws IOException:获取套接字的输出流(3)读/写操作p在进行客户与服务器之间的读/写时,一般不会直接使用getXXXStream()方法得到的输入/输出流对象,而是将Socket的输入/输出流连接
10、到其它方便进行数据读写操作的流上,比如DataInputStream、DataOutputStream等等(4)关闭Socketpvoid close()throws IOException:关闭套接字pboolean isClosed():判断套接字是否已关闭示例pServerDemo2.javapClientDemo2.javap一对一聊天InetAddress类p与IP地址相关的类,使用该类可以获取IP地址、主机地址等信息p常用方法:static InetAddress getByName(String host):获取与host对应的InetAddress对象pString getHostAddress():返回主机地址的字符串表示pString getHostName():返回主机名的字符串表示pstatic InetAddress getLocalHost():返回本地主机的InetAddress对象注意:上述方法都会抛出 UnknownHostException异常,必须进行异常处理pInetAddress类方法的使用p例:InetAddressDemo.java