10JAVA.ppt_第1页
10JAVA.ppt_第2页
10JAVA.ppt_第3页
10JAVA.ppt_第4页
10JAVA.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络编程,第十章,目标,掌握 包 掌握套接字相关类 了解Web 相关类,网络,实现资源共享和通信 连接终端系统(主机)的通信系统,网络适配器,计算机通过线缆连接 网络接口卡 (NIC) 用于将计算机连接至线缆,也称为网络适配器,Java与Internet,网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言在网络编程方面提供了许多方便,其他语言往往需要数页代码才能完成的事情,在Java中可能只需要一条语句就可以。 Java的网络通信分为三个层次: 最高一级的网络通信就是我们上一讲中所涉及到的从网络上下载Applet。客户端浏览器通过HTM

2、L文件中的标记来识别Applet,并解析Applet的属性,通过网络获取Applet得字节码文件。(由浏览器提供) 上一讲中所涉及到的声音播放和图象显示,其中声音文件和图象文件的获取是次一级的通信。通过类URL的对象指明文件所在位置,并从网络上下载声音和图象文件。(由Java开发环境提供) 最低一级的通信是利用包中提供的类直接在程序中实现网络通信。(由Java语言开发包提供),TCP/IP(传输控制协议/网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。TCP/IP网络参考模型包括五个层次:应用层、传输层、网络层、链路层、物理层。 ISO/OSI网络参考模型则包括

3、七个层次:应用层、表示层、会话层、传输层、网络层、链路层、物理层。,物理层,Java与Internet,大多数基于Internet的应用程序被看作TCP/IP网络的最上层, 如:ftp,http,smtp,pop3,telnet,nntp等。 网络层对TCP/IP网络中的硬件资源进行标识。连接到TCP/IP网络中的每台计算机(或其他设备)都有唯一的地址,这就是IP地址。IP地址实质上是一个32位的整数,通常以“%d.%d.%d.%d”的形式表示,每个d是一个8位整数。 在TCP/IP网络中,不同的机器之间进行通信时,数据的传输是由传输层控制的,这包括数据要发往的目标机器及应用程序、数据的质量控

4、制等。 TCP/IP网络中最常用的传输协议就是TCP(Transport Control Protocol)和UDP(User Datagram Protocol)。,Java与Internet,一台机器一般通过一条链路连接到网络上,但一台机器中往往有很多应用程序需要进行网络通信,如何区分呢?这就要靠网络端口号(port)了。 端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点,它是TCP和UDP的基础。,IP与端口号组合而得出的Socket,可以完全分辨Internet上运行的程

5、序。,Java与Internet,端口号是用一个16位的整数来表达的,其范围为065535,其中01023为系统所保留,专门给那些通用的服务(well-known services),如http服务的端口号为80,telnet服务的端口号为23,ftp服务的端口为21,因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。,Java与Internet,传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。 传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。建立连接后,发送端

6、将发送的数据印记了序列号和错误检测代码,并以字节流的方式发送出去;接收端则对数据进行错误检查并按序列顺序将数据整理好,数据在需要时可以重新发送,因此整个字节流到达接收端时完好无缺。这与两个人打电话的情形是相似的。 TCP协议具有可靠性和有序性,并且以字节流的方式发送数据,它通常被称为流通信协议。,Java与Internet,与TCP协议不同,用户数据报协议(UDP)则是一种无连接的传输协议。利用UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要到达的Socket(主机地址和端口号),然后再将数据报发送出去。这种传输方式是无序的,也不能确保绝

7、对的安全可靠,但它很简单也具有比较高的效率,这与通过邮局发送邮件的情形非常相似。 TCP协议和UDP协议各有各的用处。当对所传输的数据具有时序性和可靠性等要求时,应使用TCP协议;当传输的数据比较简单、对时序等无要求时,UDP协议能发挥更好的作用,如ping,发送时间数据等。,Java与Internet,Java与Internet,针对网络通信的不同层次,Java提供的网络功能有四大类: InetAddress ,URLs,Sockets,Datagram。 InetAddress面向的是IP层,用于标识网络上的硬件资源。 URL面向的应用层,通过URL,Java程序可以直接送出或读入网络上的

8、数据。 Sockets面向的则是传输层。Sockets使用的是TCP协议,这是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道进行通信。 Datagram则使用UDP协议,是另一种网络传输方式,它把数据的目的地纪录在数据包中,然后直接放在网络上。,Java与Internet,包中的主要的类和可能产生的例外包括: 面向IP层的类:InetAddress 面向应用层的类:URL、URLConnection 面向传输层的类: TCP协议相关类:Socket、ServerSocket UDP协议相关类:DatagramPacket、DatagramSocket、MulticastS

9、ocket 可能产生的例外: BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketException、UnknownHostException、UnknownServiceException,Java与Internet,协议,网络中计算机之间通信的规则 常用的协议 超文本传输协议 (HTTP) 文件传输协议 (FTP) 简单邮件传输协议 (SMTP) 网络新闻传输协议 (NNTP),客户端/服务器模式,又称为智能服务器/智能客户端体系结构 服务器和

10、客户端共同承担计算 客户端 向另一台计算机请求服务的计算机 服务器 处理客户端请求的计算机,优点,服务器和客户端分摊工作 服务器可以同时为数千台客户端服务 多个客户端可以同时访问服务器,IP与DNS,IP 地址 连接至网络的每台计算机都是唯一的 32 位数字,四个用点号分隔的数字 包括网络 ID 和主机 ID 网络的类包括 A、B、C和 D 类 域名系统 将特定 IP 地址映射至字符串 映射由域名服务器系统维护,包,可用的类 InetAddress Socket、ServerSocket 和 SocketImpl DatagramPacket 和 DatagramSocket URL、URLC

11、onnection 和 URLEncoder,套接字,是 Internet 通信的端点 与主机地址和端口地址相关联 客户端和服务器通过套接字建立连接和进行通信 TCP/IP 套接字 较可靠的双向流协议 发送任意数量的数据 提供消息确认、错误检测和错误恢复等服务 UDP 套接字 比较不可靠,InetAddress,封装 IP 地址和 DNS 工厂方法用于创建实例 InetAddress getLocalHost() InetAddress getByName(String HostName),import .*; public class inetaddress public static In

12、etAddress ina; public static void main(String args) try ina = InetAddress.getByName(args0); System.out.println(ina.getHostAddress(); System.out.println(ina.getHostName(); catch (Exception e) System.out.println(e); ,Socket,建立服务器和客户端之间的连接 构造函数 Socket(String hostName, int port) Socket(InetAddress a, in

13、t port) 可用方法 InetAddress getInetAddress( ) int getPort( ) int getLocalPort( ) *InputStream getInputStream() *outputStream getOutputStream(),import java.io.*; import .*; public class Client public static void main(String args) String s=null;Socket mysocket; DataInputStream in=null; DataOutputStream o

14、ut=null; String username=null; try mysocket=new Socket(localhost,4331); in=new DataInputStream(mysocket.getInputStream(); out=new DataOutputStream(mysocket.getOutputStream(); BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in); s=in.readUTF(); System.out.print(s); username=keyin

15、.readLine(); out.writeUTF(username); s=in.readUTF(); System.out.println(s); mysocket.close(); catch(IOException e)System.out.println(无法连接); ,ServerSocket,注册自己时表示对客户端连接感兴趣 accept( ) 方法用于等待客户端触发通信 构造函数 ServerSocket(int port) ServerSocket(int port, int maxqu),import java.io.*; import .*; public class S

16、erver public static void main(String args) ServerSocket server=null; Socket you=null;String s=null; DataOutputStream out=null; DataInputStream in=null; try server=new ServerSocket(4331); catch(IOException e1)System.out.println(ERRO:+e1); try System.out.println(正在监听.); you=server.accept(); in=new Dat

17、aInputStream(you.getInputStream(); out=new DataOutputStream(you.getOutputStream(); out.writeUTF(login:); s=in.readUTF(); System.out.println(用户:+s); out.writeUTF(user: +s+ login successful); you.close(); catch(IOException e) System.out.println(ERRO:+e); ,数据报,通信的一种报文类型 两个类 DatagramPacket 数据容器 Datagram

18、Socket 发送或接收 DatagramPacket,DatagramSocket,用于发送或接收 DatagramPacket对象 构造函数 DatagramSocket() DatagramSocket(int port) 可用方法 void send(DatagramPacket d) void receive(DatagramPacket p) void close(),DatagramPacket,起到数据容器作用的类 构造函数 DatagramPacket(byte data, int size) DatagramPacket(byte data, int size, InetA

19、ddress I, int port),URL 2-1,指向 Internet 上的资源文件 URL 类提供 API 来访问 Internet 上的信息 URL 的组件 协议 IP 地址或主机名 端口号 实际文件路径,import java.io.*; import .*; public class url public static void main(String args) try FileOutputStream fos = new FileOutputStream(student.mdb); URL url = new URL(http:/mjdell/landa/student.m

20、db); InputStream is = url.openStream(); int i = is.read(); while(i !=-1) fos.write(byte)i); i = is.read(); fos.flush(); fos.close(); is.close(); catch (IOException e) ,URL 2-2,构造函数 URL(String urlname) URL(String protocol, String hostname, int port, String path) URL(String protocol, String hostname,

21、String path),import java.io.*; import .*; import java.awt.*; import java.awt.event.*; public class urldownload extends Frame implements ActionListener TextField tf; TextArea ta; Button ok,save;Label lb; URL url; BufferedReader bin; urldownload() super(This is a net program!); lb=new Label(请输入网址:); t

22、f=new TextField(30); ok=new Button(确定); save=new Button(保存); ta=new TextArea(40,60);,Panel p=new Panel(); p.add(lb);p.add(tf);p.add(ok);p.add(save); add(p,North); add(ta,Center); ok.addActionListener(this); save.addActionListener(this); Font ft=new Font(宋体,Font.BOLD,26); tf.setFont(ft); ta.setFont(f

23、t); public void actionPerformed(ActionEvent e) String msg=; if(e.getSource()=ok) try url=new URL(tf.getText(); catch(MalformedURLException e1)System.out.println(e1:);,try bin=new BufferedReader(new InputStreamReader(url.openStream(); while(msg=bin.readLine()!=null) ta.append(n+msg); catch(IOExceptio

24、n ee)System.out.println(ee); if(e.getSource()=save) try PrintWriter out=new PrintWriter(new FileWriter(mydown.html); out.print(ta.getText(); out.flush(); out.close(); catch(IOException e3) ,public static void main(String args) urldownload myclient=new urldownload(); myclient.setSize(800,600); myclie

25、nt.show(); myclient.addWindowListener(new WindowDestroyer(); ,URLConnection,抽象类 用于封装由 URL 表示的 Web 对象的连接 提供进一步了解远程资源的方法 可用方法 URLConnection openConnection( ) String getContentType( ) long getLastModified( ) int getContentLength( ),import .*; import java.io.*; import java.util.*; public class URLConnec

26、tionExample public static void main(String args) throws Exception URL url = new URL(); URLConnection con = url.openConnection(); System.out.println(URL used is: + con.getURL().toExternalForm(); System.out.println(Content Type: + con.getContentType(); System.out.println(Content Length: + con.getContentLength(); System.out.println(Las

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论