您好,欢迎访问三七文档
Java网络通信11.Java网络通信周筱媛西安科技大学计算机系Email:yuanyuanzhou@hotmail.comTel:13072904364Java网络通信主要内容:学习如何通过java.net包中的类直接在程序中实现网络通信。Java网络通信11.1URL类编程URL(UniformResourceLocator)是统一资源定位器的简写。它表示Internet上某一资源的地址,这些资源包括Web页、文本文件、图形(像)文件和声频片段等。通过URL可以访问Internet和。浏览器通过解析给定的URL可以在网络上查找相应的文件或资源。Java网络通信11.1.1URL的组成和URL类URL的组成protocol://resourceName协议名指明获取资源所使用的传输协议,如http、ftp等;资源包括主机名、端口号、文件的引用;如:8080/jsp/temp.html协议名资源Java网络通信URL类Java将URL封装成URL类,通过构造方法可以实例化一个URL对象。publicURL(Stringspec)publicURL(URLurl,Stringfile)publicURL(Stringprotocol,Stringhost,Stringfile)publicURL(Stringprotocol,Stringhost,intport,Stringfile)URLmyURL=newURL(“”);URLmydoc=newURL(myURL,“index.html”);URLmyURL=newURL(“http”,“”,“index.html”);URLmyURL=newURL(“http”,“”,80,“index.html”);Java网络通信URL类编程中的常见异常MalformedURLExceptiontry{……URLmyURL=newURL(“……”);……}catch(Exceptione){……//异常处理……}Java网络通信URL类的成员方法:publicfinalObectgetContent();publicStringgetFile();publicStringgetHost();publicintgetPort();publicStringgetProtocol();publicStringtoExternalForm();publicStringtoString();publicfinalInputStreamopenStream()throws……;publicURLConnectionopenConnection();……Java网络通信例1获取URL对象属性importjava.net.*;publicclassmyurl{pub1icstaticvoidmain(Stringargs[]){try{URLurl=newURL()System.out.println(theProtocol:+url.getProtocol());System.out.Println(thehostname:+url.getHost());System.out.println(theport:+url.getPort());System.out.println(thefile:+url.getFle());System.out.println(theext:+url.toExternalForm)),System.out.println(url.toString());}catch(Exceptione){System.out.println(e);}}}theprotocol:httpthehostname::/homelhomepage.htmltheext:://网络通信使用URL类读取()与指定的URL建立连接并返回一个InputStream类的对象,然后从这一连接中读取数据。常用的读取网络资源数据的步骤如下:创建URL类的实例对象;通过URL类的实例对象的openStream方法建立连接;读取数据;关闭数据流;Java网络通信例2用url.openStream()方法读取*;importjava.io.*;publicclassOpenStream{publicstaticvoidmain(Stringargs[])throwsException{URLurl=newURL();BufferedReaderin=newBufferedReader(newInputStreamReader(url.openStream()));StringinputLine;while((inputLine=in.readLine())!=null){System.out.println(inputLine);}in.close();}}Java网络通信使用URLConnection连接在网络上的通信连接。使用URLConnection对象获取资源的步骤:创建一个URL对象;调用URL对象的getConnection()方法获得对应的URLConnection对象;获取输入流并读数据;关闭连接;Java网络通信例3使用URLConnection连接服务器importjava.net.*;importjava.io.*;publicclassurlcon{publicstaticvoidmain(Stringargs[]){InputStreamis;OutputStreamos;intb;try{URLurl=newURL();URLConnectionuric=url.openConnection();System.out.println(thelength:+uric.getContentLength());System.out.println(thetype:+uric.getContentType());System.out.println(thedate:+uric.getDate());System.out.println(thelastmodified:+uric.getLastModified());os=newFileOutputStream(d:\\down.html);if(uric.getContentLength()=1){is=uric.getInputStream();while((b=is.read())!=-1){os.write(b);System.out.write(b);}}else{System.out.println(nocontent);}}catch(Exceptione){System.out.println(e);}}}Java网络通信例11.5利用URLConnection向服务器发送查询信息,并接受服务器返回的参数。P254Java网络通信二、Socket通信预备知识Socket是网络上的两个程序通过一个双向的通信连接实现数据交换的通道。或者说网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,可以说Socket是面向客户/服务器模型设计的。Socket通信机制提供了两种通讯方式:有联接(TCP)和无联接(UDP)方式,分别面向不同的应用需求。TCP是以连接为基础的流式协议,通信前,首先要建立连接,然后才能通信。因此,能保证同步、准确地进行通信。如果应用程序需要可靠的点对点通信,一般采用TCP这种协议。比如:HTTP,ftp,telnet等应用程序,确保其可靠性对于程序运行是非常关键的。Java网络通信UDP是一种无连接的协议,其系统开销比无联接方式小,但通信链路提供了不可靠的数据报服务,每个数据报都是一个独立的信息,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行。端口:数据通过网络到达一台主机(或准确的说是主机的网卡)是通过IP地址实现的。但当该主机运行多个程序时如何识别数据是属于哪个程序的呢?这就是端口。一个端口只能绑定一个应用程序。通过TCP/UDP通信的应用程序必须知道对方的IP地址和端口号才能通信。端口号可取从0-65535,其中,0-1023为保留端口,提供给众所周知的一些服务。Java网络通信Socket通信的一般过程使用Socket进行客户/服务器通信程序设计的一般过程是这样的:Server端listen(监听)某个端口是否有连接请求,Client端向Server端发出connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立好了,之后客户端、服务器端都可以用send()、write()等方法与对方通信。Java网络通信对于一个功能齐全的Socket的工作过程包含以下四个基本步骤:创建Socket;打开连接到Socket的输入输出流;按照一定的协议对Socket进行读/写操作;关闭Socket。Java网络通信1.创建Socket创建客户端Socket可以通过Socket的构造方法,介绍如下:publicSocket(Stringhost,intport)publicSocket(InetAddressaddress,intport)//用该方法创建一个与指定远程主机及其端口建立连接;publicSocket(Stringhost,Intport,booleanstream)//stream指明Socket是流式Socket还是数据报式Socketpublicsocket(InetAddressaddress,Intport,booleanstream)Serversocket的构造方法为:publicServersocket(intport)//指定端口号来创建Serversocket对象,该端口为端主机的端口;publicServersocket(intport,intcount)//用指定的端口号创建Serversocket对象,如果该端的端口正在使用,只等待count毫秒。Java网络通信2.打开输入/输出流publicInputstreamgetInputstream()//得到Socket建立的输入流pubicOutputstreamgetoutputstream()//得到Socket建立的输出流Socket对象的其他方法:–publicvoidclose()–publicInetAddressgetlnetAddress()//得到远程主机IP地址的InetAddress对象publicintgetLocalPort()//得到与远程机连接的本地机的端口号Java网络通信Serversocket对象的其他方法:publicSocketaccept()//获取与客户端连接的Socket对象//accept()为一个阻塞性方法,即该方法被调用后,将等待客户的请求,直到有一个客户启动并请求连接到相同的端口,然后accept()返回一个对应于客户的
本文标题:Java网络通信
链接地址:https://www.777doc.com/doc-7024658 .html