第7章 Java网络编程.ppt

上传人:qwe****56 文档编号:70011786 上传时间:2023-01-14 格式:PPT 页数:51 大小:1.80MB
返回 下载 相关 举报
第7章 Java网络编程.ppt_第1页
第1页 / 共51页
第7章 Java网络编程.ppt_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《第7章 Java网络编程.ppt》由会员分享,可在线阅读,更多相关《第7章 Java网络编程.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第10章 Java网络编程重点内容:OSI和TCP/IP网络模型 套接字的概念 UDP协议下网络编程方法 TCP协议下网络编程方法 HTTP协议下网络编程方法1 网络初步OSI参考模型 开放系统互联OSI(Open System Interconnection)参考模型是在1984年由国际标准化组织ISO(International Organization for Standardization)发布的,现在已被公认为计算机互联通信的基本体系结构模型,描述了信息如何从一台计算机的应用层软件通过网络媒体传输到另一台计算机的应用层软件中。OSI参考模型把网络中计算机之间的信息传递分成7个小的易于

2、管理的层,OSI的七层协议分别执行一个(或一组)任务,完成特定的网络功能,各层间相对独立,互不影响。七层分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP(Transmission Control Protocol),指的是传输控制协议,它是主要负责数据的分组和重组。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能TCP是一个“可靠的”、面向连结的传输机制,通过三次握手建立连接。它提供一种可靠的字节流保证数据完整、无损并且按顺序到达TCP协议Java实用编程技术UDP(User Datagram Protocol)指的是用户数据报协议。和TCP一样都是网络

3、传输层上的协议,但与TCP有本质的区别UDP是“不可靠”、无连结和面向消息的协议,它使用数据报进行传输UDP协议Java实用编程技术端口(Port)可以被理解成计算机与外界通信交流的窗户。网络上的一台计算机可以提供多种服务,单靠IP地址无法将它们区别开,所以通过“IP地址+端口号”的形式来区分不同的服务端口号是一个整数,通常范围在065535。小于1024的端口号一般的分配给特定的服务协议的端口端口JavaJava实用编程技术实用编程技术套接字,是支持TCP/IP的网络通信的基本操作单元,可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创

4、建,通过绑定与网络驱动建立关系通常用的TCP/IP协议的3种套接字类型有 流套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)、原始套接字(SOCK_RAW)流套接字用于提供面向连接、可靠的数据传输服务数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务原始套接字(SOCK_RAW):原始套接字可以读写内核没有处理的IP数据包套接字套接字JavaJava实用编程技术实用编程技术Java 通过扩展流式输入/输出接口和增加在网络上建立输入/输出对象特性这两个方法支持 TCP/IPJava 支持TCP和UDP协议族Java提供的网络功能有三大类:URL、Soc

5、ket、DatagramTCP用于网络的可靠的流式输入/输出。UDP支持更简单的、快速的、点对点的数据报模式JAVA和网和网络JavaJava实用编程技术实用编程技术 TCP协议网络编程TCP协议 TCP是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个套接字之间必须建立连接,一旦两个套接字连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。与UDP不同,TCP对传输数据的大小没有限制。在包中提供了两个类Socket和ServerSocket,分别用来表示

6、双向连接的客户端和服务器端。基于TCP的Socket编程ServerServerSocket(int port)Socket.accept()OutputStreamSocket.getOutputSrteam()InputStreamSocket.getInputStream()Socketclose()ClientSocket(inetAddress Address,int port)OutputStreamSocket.getOutputSrteam()InputStreamSocket.getInputStream()Socketclose()服务器程序编写服务器程序编写:1.调用Se

7、rverSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;2.调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字.3.调用Socket类的getOutputStream()和getInputStream()获取输出流和输入流,开始网络数据的发送和接受.4.最后关闭通信套接字.客户端程序编写客户端程序编写:1.调用Socket()创建一个流套接字,并连接到服务器端;服务器ip地址,和端口号.2.调用Socket类的OutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接受3.最后关闭通信套接字.

8、3 TCP协议网络编程协议网络编程下面是一个典型的创建下面是一个典型的创建Server端端ServerSocket的过程的过程:ServerSocket server=null;try server=new ServerSocket(4700);/创建一个创建一个ServerSocket在端口在端口4700监听客户请监听客户请求求catch(IOException e)System.out.println(can not listen to:+e);Socket socket=null;try socket=server.accept();/accept()是一个阻塞的方法,一旦有客户请求,是

9、一个阻塞的方法,一旦有客户请求,/它就会返回一个它就会返回一个Socket对象用于同客户进行交互对象用于同客户进行交互catch(IOException e)System.out.println(Error:+e);3 TCP协议网络编程协议网络编程下面是一个典型的创建客户端下面是一个典型的创建客户端Socket的过程的过程:trySocket socket=new Socket(127.0.0.1,4700);/127.0.0.1是TCP/IP协议中默认的本 /机地址catch(IOException e)System.out.println(Error:+e);import java.io

10、.*;import .*;public class ServerSoc public static void server()try ServerSocket ss=new ServerSocket(6000);System.out.println(“服务器已经启动”);Socket s=ss.accept();OutputStream os=s.getOutputStream();InputStream is=s.getInputStream();os.write(Hello,welcom you!.getBytes();byte buf=new byte100;int len=is.rea

11、d(buf);System.out.println(服务器收到客户信息:+new String(buf,0,len);os.close();is.close();ss.close();catch(Exception ex)ex.printStackTrace();import java.io.*;import .*;public class ClientSoc public static void main(String args)client();public static void client()try Socket s=new Socket(InetAddress.getByName(

12、null),6000);OutputStream os=s.getOutputStream();InputStream is=s.getInputStream();os.write(Hello,this is zhangsan.getBytes();byte buf=new byte100;int len=is.read(buf);System.out.println(客户收到服务器信息:“+new String(buf,0,len);os.close();is.close();s.close();catch(Exception ex)ex.printStackTrace();服务器窗口显示服

13、务器窗口显示:服务器收到客户信息:服务器收到客户信息:Hello,this is zhangsan客户端窗口显示客户端窗口显示:客户收到服务器信息:客户收到服务器信息:Hello,welcom you!package code;import .*;import java.io.*;public class DemoSocket extends Threadprivate Socket s;public DemoSocket(Socket s)this.s=s;public void run()tryOutputStream os=s.getOutputStream();InputStream

14、is=s.getInputStream();os.write(Hello,welcom you!.getBytes();byte buf=new byte100;int len=is.read(buf);System.out.println(服务器端收到客户端信息:“+new String(buf,0,len);os.close();is.close();s.close();catch(Exception ex)ex.printStackTrace();多线程编程多线程编程public static void server()tryServerSocket ss=new ServerSocke

15、t(6000);while(true)Socket s=ss.accept();new DemoSocket(s).start();catch(Exception ex)ex.printStackTrace();public static void client()trySocket s=new Socket(InetAddress.getByName(null),6000);OutputStream os=s.getOutputStream();InputStream is=s.getInputStream();byte buf=new byte100;int len=is.read(buf

16、);System.out.println(客户端收到服务器端信息:“+new String(buf,0,len);os.write(Hello,this is wuxing.getBytes();os.close();is.close();s.close();catch(Exception ex)ex.printStackTrace();public static void main(String args)if(args.length0)server();elseclient();服务器端收到客户端信息:服务器端收到客户端信息:Hello,this is wuxing服务器端收到客户端信息:

17、服务器端收到客户端信息:Hello,this is zhangsan服务器端收到客户端信息:服务器端收到客户端信息:Hello,this is wuxing客户端窗口客户端窗口1显示显示:客户收到服务器信息:客户收到服务器信息:Hello,welcom you!客户端窗口客户端窗口2显示显示:客户收到服务器信息:客户收到服务器信息:Hello,welcom you!服务器窗口显示服务器窗口显示:UDP协议网络编程UDP协议 UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据包都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的

18、地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。使用UDP时,每个数据包中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。但使用UDP传输数据是有大小限制的,每个被传输的数据包必须限定在64 KB之内。UDP是一个不可靠的协议,发送方所发送的数据包并不一定以相同的次序到达接收方。基于UDP的Socket编程接收端接收端DatagramSocket(int port)DatagramPacket(byte buf,int length)DatagramSocket.recerve(DatagramPacket p)DatagramSocketclose()发

19、送端发送端DatagramSocket()DatagramPacket(bytebuf,int length,InetAddress address,Int port)DatagramSocket.send(DatagramPacket p)DatagramSocketclose()接收端程序编写接收端程序编写:1.调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口.2.调用DatagramPacket(byte buf,int length),创建一个字节数组以接收UDP包.3.调用DatagramSocket类的receive(),接收UDP包.4.

20、最后关闭数据报套接字发送端程序编写发送端程序编写:1.调用DatagramSocket()创建一个数据报套接字.2.调用DataramPacket(byte buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包.3.调用DatagramSocket类的send(),发送UDP包4.最后关闭数据报套接字.UDP通信例子通信例子:package code;import .*;import java.io.*;public class UdpDemo public static void main(String args

21、)if(args.length0)recev();elsesen();public static void recev()tryDatagramSocket ds=new DatagramSocket(6000);byte buf=new byte100;DatagramPacket dp=new DatagramPacket(buf,100);ds.receive(dp);System.out.println(“接收端收到:接收端收到:+new String(buf,0,dp.getLength();String str=Welcom you!;DatagramPacket dpSend=n

22、ew DatagramPacket(str.getBytes(),str.length(),dp.getAddress(),dp.getPort();ds.send(dpSend);ds.close();catch(Exception ex)ex.printStackTrace();public static void sen()tryDatagramSocket ds=new DatagramSocket();String str=Hello,this is zhangsan;DatagramPacket dp=new DatagramPacket(str.getBytes(),str.le

23、ngth(),InetAddress.getByName(localhost),6000);ds.send(dp);byte buf=new byte100;DatagramPacket dpRecv=new DatagramPacket(buf,100);ds.receive(dpRecv);System.out.println(“发送端:+new String(buf,0,dpRecv.getLength();ds.close();catch(Exception ex)ex.printStackTrace();发送端显示:接收端显示:发送端收到:发送端收到:Welcom you!接收端收到

24、:接收端收到:Hello,this is zhangsan4 HTTP协议网络编程HTTP协议 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断的完善和扩展。HTTP协议是基于请求响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

25、4 HTTP协议网络编程基于URL的高层次Java网络编程 URL(Uniform Resource Locator)是统一资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。4 HTTP协议网络编程URL的组成 protocol:/resourceName协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件

26、名或文件内部的一个引用。如:http:/ HTTP协议网络编程为了表示URL,中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:(1)public URL(String spec);通过一个表示URL地址的字符串可以构造一个URL对象。URL urlBase=new URL(http:/ URL(URL context,String spec);通过基URL和相对URL构造一个URL对象。URL net263=new URL(http:/ index263=new URL(net263,index.html)4 HTTP协议网络编程(3)public URL(String p

27、rotocol,String host,String file);new URL(http,/pages/G.html);(4)public URL(String protocol,String host,int port,String file);URL gamelan=new URL(http,80,Pages/Gwork.html);4 HTTP协议网络编程 URL类package work;import .MalformedURLException;import .URL;public class URLDemo public static void main(String args)

28、URL url=null;try url=new URL(“http:/www.url.org:8080/demo/info/”);catch(MalformedURLException e)e.printStackTrace();4 HTTP协议网络编程 If(url!=null)System.out.println(“协议名为”+url.getProtocol();System.out.println(“主机名为”+url.getHost();System.out.println(“文件名为”+url.getFile();System.out.println(“端口号为”+url.getP

29、ort();运行结果:协议名为http主机名为www.url.org文件名为/demo/info/端口号为80804 HTTP协议网络编程从URL读取WWW网络资源 示例:public class URLReader public static void main(String args)throws Exception/声明抛出所有例外URL tirc=new URL(http:/127.0.0.1:8080/);/构建一URL对象BufferedReader in=new BufferedReader(new InputStreamReader(tirc.openStream();/使用o

30、penStream得到一输入流并由此构造一个BufferedReader对象String inputLine;while(inputLine=in.readLine()!=null)/从输入流不断的读数据,直到读完为止System.out.println(inputLine);/把读入的数据打印到屏幕上in.close();/关闭输入流4 HTTP协议网络编程结果:Resin®Default Home PageResin®Default Home PageThis is the default page for the Resin web server.使用URL下载文件的

31、例子:package code;import java.awt.*;import java.awt.event.*;import .*;import java.io.*;public class Download public static void main(String args)Frame f=new Frame(“程序下载);f.setSize(600,400);f.setLocation(100,100);Panel p=new Panel();Label l=new Label(Please input URL:);final TextField tf=new TextField(

32、30);p.add(l);p.add(tf);f.add(p,North);final TextArea ta=new TextArea();f.add(ta,Center);Button btn=new Button(Download);f.add(btn,South);使用URL下载文件的例子:btn.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String str=tf.getText();tryURL url=new URL(str);URLConnection urlC

33、onn=url.openConnection();String line=System.getProperty(line.separator);ta.append(Host:+url.getHost();ta.append(line);ta.append(Port:+url.getPort();ta.append(line);ta.append(ContentType:+urlConn.getContentType();ta.append(line);ta.append(ContentLength:+urlConn.getContentLength();InputStream is=urlCo

34、nn.getInputStream();FileOutputStream fos=new FileOutputStream(4.gif);int data;使用URL下载文件的例子:while(data=is.read()!=-1)fos.write(data);is.close();fos.close();catch(Exception ex)ex.printStackTrace(););使用URL下载文件的例子:f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););f.show();使用URL下载文件的例子:执行结果:

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

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁