您好,欢迎访问三七文档
网络通信学习目标了解网络通信的基础知识掌握TCPSocket通信的原理及编程掌握UDPSocket通信的原理及编程1、网络编程的基础知识网络编程初步近年来,因特网得到了广泛的发展和应用Java语言的产生与推广,也与网络息息相关利用Java语言强大的功能,将使得网络编程变得十分简单网络传输协议接入网络的计算机都遵循同样的协议,这就是TCP/IP协议TCP/IP协议将网络分成多层1、网络编程的基础知识网络传输的层次结构常用的网络层次有4层,分别是连接层、网络层、传输层和应用层我们编写的网络程序通常处在应用层,在这一层,不需要追究有关网络或网卡的技术细节,就可以编写出很好的程序1、网络编程的基础知识IP地址为了区分网络上的主机,每台主机都分配一个专门的地址称为IP地址端口用来标识计算机上正在运行的进程(程序),使得数据能正确地传送给应用程序TCP协议传输控制协议,提供两台计算机之间的可靠的无差错数据传输,但建立连接需要时间,差错控制开销大UDP协议无连接通信协议,传输不可靠,但差错开销较小,不需要建立连接,传输大小控制的64KB以下2、URL类在java.net包中的URL类是对统一资源定位符的抽象。一个URL对象通常包含最基本的三部分信息:协议、地址、资源URL的构造方法:publicURL(Stringspec)throwsMalformedURLExceptionpublicURL(Stringprotocol,Stringhost,Stringfile)throwsMalformed-URLExpection2、URL类例如:try{url=newURL();}catch(MalformedURLExceptione){System.out.println(“BadURL:”+url);}URL对象调用InputStreamopenStream()方法可以返回一个输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。3、显示URL资源中的HTML文件使用javax.swing包中的JEditorPane容器可以解释执行HTML文件。JEditorPane类的构造方法:publicJEditorPane()publicJEditorPane(URLinitialPage)throwsIOExceptionpublicJEditorPane(Stringurl)throwsIOExceptionJEditorPane对象调用以下方法可以显示新的URL中的资源。publicvoidsetPage(URLpage)throwsIOException4、处理超链接当JEditorPane对象调用setEditor方法将编辑属性设为false时,不仅可以显示网页的运行效果,而且用户单击网页中的超链接还可以使JEditorPane对象触发HyperlinkEvent事件。程序处理HyperlinkEvent事件,来显示新的URL资源。JEditorPane对象调用addHyperlinkListener(HyperlinkListenerlistener)方法获得监视器。监视器需要实现HyperlinkListener接口,该接口中的方法如下:voidhyperlinkUpdate(HyperlinkEvente)5.InetAddress类在java.net包中,IP地址由一个称为InetAddress的类描述。该类提供三个用来获得InetAddress实例的静态方法:getLocalHost()返回一个本地主机的IP地址getByName(Stringhost)返回对应指定主机的IP地址getAllByName(Stringhost)对某个有多个IP地址的主机可用于得到一个IP地址数组还可以使用的方法:getAddress()获得一个用字节数组形式表示的IP地址getHostName()获得对应于某个IP地址的主机名6、基于TCP的Socket编程Socket类的网络编程特点Socket类处于应用层,无需考虑技术细节利用Socket类进行网络通讯的基本步骤:创建服务器端,等待连接创建客户端,向服务器端发送请求在客户端和服务器端建立双向连接通道服务器和客户端都可以通过这条通道向对方发送消息,二者的地位是相等的6、基于TCP的Socket编程Socket类的网络编程特点在网络程序中,存在很多等待过程•服务器端等待客户端的连接•连接上的两端相互等待对方发送数据程序在等待时不能响应用户的动作,使得单线程网络程序往往处于类似死机的状态因此,网络程序一般都是多线程程序•后台线程等待网络消息•前台线程处理用户动作6、基于TCP的Socket编程Socket类的编程步骤建立客户端:(1)创建Socket对象publicSocket(Stringhost,intport)publicSocket(InetAddressaddress,Stringhost,intport)(2)利用Socket类提供的getInputStream()方法或getOutputStream()方法来获得服务器发来的信息或向服务器发送信息InputStreaminput=client.getInputStream();OutputStreamoutput=client.getOutputStream();(3)处理输入输出流,使用read()方法读去数据,write()方法写入数据(4)关闭输入流或输出流,Socket对象。6、基于TCP的Socket编程Socket类的编程步骤建立服务器端:(1)创建一个ServerSocket对象publicServerSocket(intport)publicServerSocket(intport,intmaxcount)publicServerSocket(intport,intmaxcount,InetAddressip)(2)ServerSocket对象调用accept()方法等待客户端的服务请求Scoketconnect=serveObj.accept();(3)利用ServerSocket类提供的getInputStream()方法或getOutputStream()方法来获得客户端发来的信息或向客户端发送信息(4)处理输入输出流,使用read()方法读去数据,write()方法写入数据(5)关闭输入流或输出流,ServerSocket对象7、基于UDP的Socket编程UDP通信的2大步骤:1、发送数据报2、接收数据报发送数据报的步骤:(1)创建DatagramPacket对象DatagramPacket(bytebuf[],intlength)DatagramPacket(bytebuf[],intlength,InetAddressaddress,intport)DatagramPacket(bytebuf[],intoffset,intlength)DatagramPacket(bytebuf[],intoffset,intlength,InetAddressaddress,intport)7、基于UDP的Socket编程(2)创建一个DatagramSocket对象。DatagramSocket()DatagramSocket(intport)DatagramSocket(intport,InetAddressip)(3)调用DatagramSocket对象的send()方法发送数据报,send()方法以DatagramPacket对象为参数datagramSocketObj.send(DatagramPacketObj);7、基于UDP的Socket编程接收数据报的步骤:(1)创建DatagramPacket对象(2)创建一个DatagramSocket对象(3)调用DatagramSocket对象的receive()方法接收数据,receive()方法以DatagramPacket对象为参数(4)处理接收的数据。调用DatagramPacket对象的getData()方法来获得数据。总结掌握URL类和Inetaddress类的使用了解TCP,UDP的区别掌握使用Socket编程的步骤
本文标题:网络通信
链接地址:https://www.777doc.com/doc-320032 .html