CH8-Java网络编程.ppt
《CH8-Java网络编程.ppt》由会员分享,可在线阅读,更多相关《CH8-Java网络编程.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java网络编程网络编程 第8章8.1 引言和本章任务引言和本章任务 理解网络的基本概念;理解网络的基本概念;掌握掌握URL类、类、URLconnection类、类、InetAddress类的用法;类的用法;理解什么是流套接字,并利用理解什么是流套接字,并利用Socket类和类和ServerSocket类实现流套接字编程;类实现流套接字编程;理解什么是数据报套接字,并利用理解什么是数据报套接字,并利用Java语言语言提供的提供的UDP编程机制实现数据报套接字编程。编程机制实现数据报套接字编程。2 28.2 基础知识链接基础知识链接3 38.2.1 Java与网络与网络Java语言取得成功的领域
2、之一就是网络语言取得成功的领域之一就是网络 (其他语言其他语言)数页代码数页代码-(Java)一条语句一条语句TCP/IP(传输控制协议传输控制协议/网间协议网间协议)是是internet的主要的主要协议协议,定义了计算机和外设进行通信所使用的规定义了计算机和外设进行通信所使用的规则则(应用层应用层,传输层传输层,网络层网络层,链路层链路层).大多数基于大多数基于internet的应用程序被看作的应用程序被看作TCP/IP协议协议的上一层的上一层.如如:ftp,http,smtp,pop3,telnet,nntp等等IP地址地址:TCP/IP网络中的每台计算机都有唯一的网络中的每台计算机都有唯
3、一的地址地址-IP地址地址.在在Java中中,有一个用来存储有一个用来存储internet地址的类叫地址的类叫InetAddress.4 4Java与网络与网络例例:获取本机的获取本机的IP地址地址import .*;public class getLocalHostTest public static void main()InetAddress myIP=null;try myIP=InetAddress.getLocalHost();catchUnknowHostException e)System.out.println(myIP);创建创建inetAddress类不用构造函数类不用构
4、造函数(不用不用new)5 5Java与网络与网络下面的例子演示下面的例子演示java如何根据域名自动到如何根据域名自动到DNS上查找上查找IP地址地址(与与DNS服务器的连接减至一行服务器的连接减至一行)import .*;public class getIP public static void main(String args)InetAddress pku=null;try pku=InetAddress.getByName(“”);catch(UnknowHostException e)System.out.println(pku);6 6Java与网络与网络Java提供的网络功能有
5、三大类提供的网络功能有三大类:URL,Socket,Datagram.URL是三大功能中最高级的一种是三大功能中最高级的一种,通过通过URL Java程程序可以直接送出或读入网络上的数据序可以直接送出或读入网络上的数据.Socket是传统网络程序最常用的方式是传统网络程序最常用的方式,可以想象为可以想象为两个不同的程序通过网络的通信信道两个不同的程序通过网络的通信信道.Datagram是更低级的网络传输方式是更低级的网络传输方式,它把数据的目它把数据的目的纪录在数据包中的纪录在数据包中,然后直接放在网络上然后直接放在网络上.7 78.2.2 Java基本的网络功能基本的网络功能URL类及其使用
6、类及其使用URL连接(连接(URLconnection类)类)InetAddress类类8 8 URL类及其使用类及其使用 通过通过URL读取读取WWW服务器上的数据服务器上的数据将将URL位置的数据转成一个数据流位置的数据转成一个数据流URL url=new(http:/”DataInputStream data=new DataInputStream(url.openStream();从数据流中读出数据从数据流中读出数据String line=data.readLine()while(line!=null)line=data.readLine()9 9URL连接(连接(URLconnect
7、ion类)类)3-1URL双向通信双向通信(URLConection)URLConnection是一个一是一个一http为中心的类为中心的类 1.建立连接建立连接 URL url=new URL(“http:/ con=url.openConnection();2.向服务器端送数据向服务器端送数据 PrintStream outStream=new PrintStream(con.getOutputStream();outStream.println(string_data);1010URL连接(连接(URLconnection类)类)3-23.从服务器读数据从服务器读数据 DataInput
8、Stream inStream=new DataInputStream(con.getInputStream();inStream.readLine();从从URL中得到的输出流通常与一个中得到的输出流通常与一个CGI程序程序结合一起工作结合一起工作客户端客户端java程序程序DataOutputStreamDataInputStreamCGI程序程序STDINSTDOUT服务器服务器(排序排序 sort.cgi)connectiuongetchar()putchar()1111URL连接(连接(URLconnection类)类)3-3URLConnection同时支持同时支持get和和pos
9、t两种机制两种机制一般的格式一般的格式.缺省情况下位缺省情况下位post method方式方式URL和和URLConnection的区别在于前者代表一的区别在于前者代表一个资源的位置个资源的位置,后者代表一种连接后者代表一种连接1212InetAddress类类使用起来较简单,具体使用见本书介绍使用起来较简单,具体使用见本书介绍13138.2.3 Java套接字编程套接字编程 什么是套接字什么是套接字基于基于TCP的通信的通信基于基于UDP的通信的通信1414什么是套接字什么是套接字(Socket)2-1Socket是网络上运行的程序之间双向通信是网络上运行的程序之间双向通信链路的最后终结点链
10、路的最后终结点网络服务网络服务Mailftpfinger20telnet数据结构数据结构I/O缓冲区缓冲区端口端口2123客户程序客户程序SocketIP,portIP与端口的组合得出一与端口的组合得出一个套接字个套接字,可以完全分辨可以完全分辨internet上运行的程序上运行的程序1515什么是套接字什么是套接字(Socket)2-2internet服务服务端口号端口号端口号端口号internet服务服务telnet 23 nntp 119ftp 21 www 80DNS 53 POP3 110端口号端口号:TCP/IP协议为每种服务定义了一个协议为每种服务定义了一个端口端口,当一台计算机
11、上运行不同服务器程序当一台计算机上运行不同服务器程序时时,根据端口号不同提供相应的服务根据端口号不同提供相应的服务.端口号不是计算机上的物理连接器端口号不是计算机上的物理连接器,它只是它只是具有软件意义的假想端口具有软件意义的假想端口1616基于基于TCP的通信的通信21-1在服务器端通过指定一个用来等待的连接的在服务器端通过指定一个用来等待的连接的端口号创建一个端口号创建一个 ServerSocket实例实例.在客户端通过规定一个主机和端口号创建一在客户端通过规定一个主机和端口号创建一个个 socket实例实例,连到服务器上连到服务器上.ServerSocket类的类的accept方法使服务
12、器处于阻方法使服务器处于阻塞状态塞状态,等待用户请求等待用户请求Socket类和类和ServerSocket是基于是基于TCP协议的协议的,TCP协议提供协议提供64个端口个端口,256以内位保留端口以内位保留端口.1717基于基于TCP的通信的通信21-2在本地机器上测试网络程序用回送地址在本地机器上测试网络程序用回送地址Socket socket=new Socket(“127.0.0.1”,2525);如果网络的一端已经关闭如果网络的一端已经关闭,另一端读到另一端读到null.建立建立socket连接后连接后,还应该建立输入输出数还应该建立输入输出数据流据流.1818基于基于TCP的通信
13、的通信21-3ServerServerSocket(port#)Server Socket.accept()Socket()OutputStreamInputStreamClose SocketClientSocket(host,port#)Attempt the connectionOutputStreamInputStreamClose Socket1919基于基于TCP的通信的通信21-4下面的例子演示一个简单的服务器与客户的下面的例子演示一个简单的服务器与客户的交互交互,即服务器等待即服务器等待,客户访问客户访问,相互通一次相互通一次信息信息.2020基于基于TCP的通信的通信21-5
14、.8.5 Socket创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流读客户读客户 端信息端信息向用户发出一个字符串向用户发出一个字符串创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(接收并显示接收并显示)送用户名给送用户名给服务器服务器关闭流关闭流waiting for user127.0.0.1 11111111login:connetcting client.java提示用户登录成功提示用户登录成功读读socket流流User:javaLogin successful
15、2121基于基于TCP的通信的通信21-6例例:显示服务器与客户机间的通信显示服务器与客户机间的通信(服务器端服务器端)PrintStream ps=null;DataInputStream dis=null;String username;ServerSocket serverSocket=null;Socket clientSocket=null;try serverSocket=new ServerSocket(1111);catch(IOException e)System.out.println(“Error”+e);System.exit(1);try clientSocket=s
16、erverSocket.accept();catch(IOException e)System.out.println(Accept failed.);System.exit(1);创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接2222基于基于TCP的通信的通信21-7.ps=new PrintStream(clientSocket.getOutputStream();dis=new DataInputStream(clientSocket.getInputStream();创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待
17、服务器等待网络连接网络连接建立建立socket流流向客户发出登录要求向客户发出登录要求 ps.println(login:);ps.flush();2323基于基于TCP的通信的通信21-8ps.println(login sucessful);ps.flush();System.out.println(username+has logged off);读客户读客户 端信息端信息创建服务器创建服务器(端口号端口号)定义数据成员定义数据成员服务器等待服务器等待网络连接网络连接建立建立socket流流向用户发出登录要求向用户发出登录要求通知客户连接完毕通知客户连接完毕if(username=dis
18、.readLine()=null)System.out.println(readLine returned null);System.exit(1);System.out.println(Username:+username);2424基于基于TCP的通信的通信21-9例例:显示服务器与客户机间的通信显示服务器与客户机间的通信(客户端客户端)创建创建Socket实例实例PrintStream output;DataInputStream input;String string;Socket socket=null;定义数据成员定义数据成员trysocket=new Socket(127.0.0
19、.1,1111);catch(IOException e)System.out.println(Error”+e);return;input=new DataInputStream(socket.getInputStream();output=new PrintStream(socket.getOutputStream();建立建立socket流流2525基于基于TCP的通信的通信21-10.System.out.println(input.readLine();创建创建Socket实例实例定义数据成员定义数据成员建立建立socket流流读读socket流流(看到提示看到提示)System.i
20、n.read(bArray);String s=new String(bArray,0);output.println(s);从键盘上读送用户从键盘上读送用户名送给服务器端名送给服务器端关闭流关闭流socket.close();input.close();output.close();System.out.println(Done);System.out.println(input.readLine();System.out.print(Logging off.);读服务器反馈读服务器反馈2626基于基于TCP的通信的通信21-11.8.5 Socket创建服务器创建服务器(端口号端口号)定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH8 Java 网络 编程
限制150内