《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程

上传人:E**** 文档编号:89401274 上传时间:2019-05-24 格式:PPT 页数:38 大小:230.50KB
返回 下载 相关 举报
《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程_第1页
第1页 / 共38页
《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程_第2页
第2页 / 共38页
《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程_第3页
第3页 / 共38页
《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程_第4页
第4页 / 共38页
《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程》由会员分享,可在线阅读,更多相关《《Java程序设计实用教程》-赵欢-电子教案 第7章 Java网络编程(38页珍藏版)》请在金锄头文库上搜索。

1、1,第七章 Java网络编程,主讲: 赵 欢 教授,2,第七章Java网络编程,TCP/IP协议 Socket:Socket类和ServerSocket类 URL操作 连接数据库的JDBC 小结,3,7.1 TCP/IP协议,TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议,是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。 IP地址可确认网络中的任何一个网络和计算机,而要识别其它网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节

2、点计算机所在网络规模的大小分为A,B,C三类,默认的网络屏蔽是根据IP地址中的第一个字段确定的。,4,7.1 TCP/IP协议,域名是为了方便记忆而专门建立的一套地址转换系统,一个域名只能对应一个IP地址,而多个域名可以同时被解析到一个IP地址。要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。域名解析需要由专门的域名解析服务器(DNS)来完成。 Java提供的网络功能有三大类: URL, Socket, Datagram。其中,URL是三大功能中最高级的一种 . 在Java中,有一个用来存储internet地址的类叫InetAddress。

3、,5,7.1 TCP/IP协议,例7-1:获取本机的IP地址 import .*; public class getLocalHostTest public static void main(String args) InetAddress myIP=null; try myIP=InetAddress.getLocalHost(); catch(Exception e) System.out.println(myIP); 说明: 1、getLocalHost()返回主机名和地址。 2、创建inetAddress类不用构造函数(不用new)。,6,7.1 TCP/IP协议,例7-2下面的例子演

4、示java如何根据域名自动到DNS上查找IP地址。 import .*; public class getIP public static void main(String args) InetAddress bd=null; try bd=InetAddress.getByName(““); catch(Exception e) System.out.println(bd); ,7,7.2 Socket,为了在TCP上通信,客户端和服务器端的应用程序需要建立并约束在Socket上。 Socket类的对象以流的形式在客户端和服务器端之间通信。 Socket类:支持TCP/IP的基本类。TCP是

5、一个流网络连接协议。Socket类提供一些流输入/输出的方法,使得从Socket中读入数据和往Socket中写入数据都很容易。该类对于在Internet上进行通信是必不可少的。 ServerSocket类:是一个用于监听客户请求的的Internet服务器程序的类。ServerSocket类实际上并不执行服务,她在服务器上代表客户创建一个Socket类的兑现,通过创建该对象来进行通信。,8,7.2 Socket,Java提供了ServerSocket来对其进行支持.事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你, ServerSocket ser

6、ver=new ServerSocket(1111); 注意:端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的,另外端口号是从065535之间的,前1024个端口已经被TCP/IP 作为保留端口,因此所分配的端口只能是1024个之后的。,9,7.2 Socket,Java同样提供了一个Socket对象来对其进行支持,只要客户方创建一个Socket的实例对象进行支持就可以了。 Socket client=new Socket(InetAddress.getLocalHost(),1111); 客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAd

7、dress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。,10,7.2 Socket,例7-3 编写程序实现简单的两台计算机之间的通讯。 服务器: import java.io.*; import .*; public class MyServer public static void main(String args) throws IOException ServerSocket server=new ServerSocket(1111); Socket client=server.accept(); B

8、ufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream(); PrintWriter out=new PrintWriter(client.getOutputStream(); while(true) String str=in.readLine(); System.out.println(str); out.println(“has receive“); out.flush(); if(str.equals(“end“) break; client.close(); ,11,7.2 Soc

9、ket,客户端: import .*; import java.io.*; public class Client static Socket server; public static void main(String args) throws Exception server=new Socket(InetAddress.getLocalHost(),1111); BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream(); PrintWriter out=new PrintWrite

10、r(server.getOutputStream(); BufferedReader wt=new BufferedReader(new InputStreamReader(System.in); while(true) String str=wt.readLine(); out.println(str); out.flush(); if(str.equals(“end“) break; System.out.println(in.readLine(); server.close(); ,12,7.2 Socket,13,7.2 Socket,例7-4 在例7-3的基础上实现多个客户端。 服务

11、器: import java.io.*; import .*; public class MyServer public static void main(String args) throws IOException ServerSocket server=new ServerSocket(1111); while(true) Socket client=server.accept(); BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream(); PrintWriter out=new

12、 PrintWriter(client.getOutputStream(); while(true) String str=in.readLine(); System.out.println(str); out.println(“has receive“); out.flush(); if(str.equals(“end“) break; client.close(); ,14,7.2 Socket,客户端: import .*; import java.io.*; public class MultiUser extends Thread private Socket client; pub

13、lic MultiUser(Socket c) this.client=c; public void run() try BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream(); PrintWriter out=new PrintWriter(client.getOutputStream(); /Mutil User but cant parallel while(true) String str=in.readLine(); System.out.println(str); out.

14、println(“has receive“); out.flush(); if(str.equals(“end“) break; client.close(); ,15,7.2 Socket,catch(IOException ex) finally public static void main(String args)throws IOException ServerSocket server=new ServerSocket(1111); while(true) /transfer location change Single User or Multi User MultiUser m

15、u=new MultiUser(server.accept(); mu.start(); ,16,7.2 Socket,关于Java的Socket机制 Socket机制用到的类有.ServerSocket、.Socket等。服务器端以监听端口号和接受队列长度为参数实例化ServerSocket类,缺省的队列长度是50,以accept()方法接收客户的连接。客户端则直接以服务器的地址和监听端口为参数实例化Socket类,连接服务器,缺省的连接方式是stream socket(区别于datagram socket)。 服务器端和客户端调用getInputStream()和getOutputStream()方法得到输入/输出流。如果以ObjectInputStream和ObjectOutputStream包装Socket的输入/输出流,要注意一点,ObjectOutputStream类实例化时要向底层流写入一个标识码,ObjectInputStream类相应的读入该标识码,如果实例化的次序不当会引起死锁。建议客户服务器两端都先实例化ObjectOutputStream。,17,7.2 Socket,Socket通信机制,18,7.3 URL操作,Java提供了URL类,每一个URL对象都封装了资源标识符和协议处理程序。获得URL对象的途径之一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号