Java网络通信程序的设计.ppt

上传人(卖家):三亚风情 文档编号:3372400 上传时间:2022-08-24 格式:PPT 页数:119 大小:648.50KB
下载 相关 举报
Java网络通信程序的设计.ppt_第1页
第1页 / 共119页
Java网络通信程序的设计.ppt_第2页
第2页 / 共119页
Java网络通信程序的设计.ppt_第3页
第3页 / 共119页
Java网络通信程序的设计.ppt_第4页
第4页 / 共119页
Java网络通信程序的设计.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

1、第11章 Java网络通信程序的设计 第第11章章 Java网络通信程序的设计网络通信程序的设计 11.1 处理处理URL内容内容11.2 使用使用Socket通信通信 11.3 使用使用UDP通信通信 第11章 Java网络通信程序的设计 11.1 处理处理URL内容内容 URL(Uniform Resource Locator)是Internet的关键部分,它提供了人和机器的导航,其功能是指向计算机里的资源,即定位。URL可以分成三个部分:通信协议、计算机地址和文件。URL常见的通信协议有三种:http,ftp和file。所谓通信协议,就是客户端计算机与服务器端计算机在网络上通信的方法。第

2、11章 Java网络通信程序的设计 有时候在地址后面还要指定使用哪一个端口(Port),例如http:/:80/index.html。如果URL没有指定使用哪一个端口,则会根据通信协议使用默认的端口。一般地,http协议默认端口为80,ftp协议默认端口为21。包中包含两个专门用于URL的关键类,即URL和URLConnection。URL和URLConnection类封装了检索远程站点信息的操作,因而大大地降低了这些操作的复杂性。下面几节将介绍这两个类。第11章 Java网络通信程序的设计 11.1.1 URL类的基本方法 URL类提供的最基本的网络功能是以流的形式读取URL所指的的数据。U

3、RL类的实例可以用表示URL的文本串来建立,以表示URL所指的数据。构造一个URL类实例的最简单方法是为URL构造方法赋予一个字符串:URL url=new URL(http:/ data=new URL(url,data/data.html);第11章 Java网络通信程序的设计 这种构造方法指定了位于url的data子目录中的data.html文件,它的绝对地址应该是http:/ Java网络通信程序的设计 注:URL类既支持http协议,也支持ftp和file协议。如果URL文本有错或者Java平台不支持其协议部分,则这个构造函数抛出一个MalformedURLException,该Ex

4、ception是java.io.IOException的子类,指出给定的是不合法的URL。通常应通过try-catch块处理或声明让调用方法传递这个异常。第11章 Java网络通信程序的设计 URL类常用的构造函数有下列三种:URL(String spec)throws MalformedURLException 创建一个由spec指定的URL类的实例。URL(String spec,String host,int port,String file)throws MalformedURLException 创建一个URL类的实例,分别指定其通信协议(protocal)、计算机地址(host)、

5、连接端口(port)和文件(file)。如果port值是-1,则表示使用默认端口。第11章 Java网络通信程序的设计 URL(String protocal,String host,String file)throws MalformedURLException功能同上,但没有指定端口,即使用默认的端口。URL类的一些主要方法如下:public String getFile():返回URL中的文件部分。public String getHost():返回URL中的计算机地址部分。public int getPort():返回URL中所使用的端口。public String getProtoc

6、al():返回URL中通信协议的部分。第11章 Java网络通信程序的设计 下面是一个使用URL类及其方法的例子。例11.1 URLDemo.javaimport genesis.*;import .*;public class URLDemopublic static void main(String args)try第11章 Java网络通信程序的设计/创建一个指向首页的URL类的实例URL url=new URL(http:/ e)Transcript.println(错误的URL!);第11章 Java网络通信程序的设计 这个例子很简单,因为没有指定URL的连接端口,所以显示值为-1。

7、实际连接时,会根据通信协议而决定使用哪一个端口。它的运行结果如图11.1所示。第11章 Java网络通信程序的设计 图 11.1第11章 Java网络通信程序的设计 11.1.2 用URL类实现页面的访问 一旦构造了URL,就可以用URL类中的openStream()方法读取URL描述的数据。openStream()打开一个到URL类指定资源的连接,并返回一个InputStream对象。利用这个对象,可以方便的读取资源的内容,也可以链接到其他类型的输入流和读取器上。我们来看一个读取页面内容的例子。例11.2 GetPage.java import genesis.*;import java.i

8、o.*;import .*;第11章 Java网络通信程序的设计 public class GetPagepublic static void main(String args)tryURL url=new URL(http:/ in=url.openStream();BufferedReader reader=n e w B u f f e r e d R e a d e r(n e w InputStreamReader(in);第11章 Java网络通信程序的设计 /打开index.hmtl文件为写做准备FileWriter fw=new FileWriter(index.html);P

9、rintWriter pw=new PrintWriter(fw);String line;/逐行读入页面内容while(line=reader.readLine()!=null)/将读入的行保存到index.html文件pw.println(line);/将读入的行显示在窗口中Transcript.println(line);第11章 Java网络通信程序的设计 reader.close();pw.close();fw.close();catch(IOException e)Transcript.println(e.getMessage();程序的运行结果如图11.2所示。第11章 Java

10、网络通信程序的设计 图 11.2 第11章 Java网络通信程序的设计 上面的例子通过读取的首页index.html,展示了怎样通过URL访问Web页面的内容。图11.2窗口中显示的就是index.html页面所包含的内容(即它的源码)。该例中将读入的内容保存在当前目录下,名为index.html的文件中,用浏览器打开这个文件,可以看到如同访问的页面。但是,无法看到页面中的图片,因为打开的输入流只读入了页面的内容,并没有将图片链接也读入进来。打开index.html文件将看到如图11.3所示的页面。第11章 Java网络通信程序的设计 图 11.3第11章 Java网络通信程序的设计 11.1

11、.3 用URLConnection类实现页面的访问 我们已经知道了如何通过URL类访问URL资源,但如果想了解关于这个资源的更多信息,就需要使用URLConnection类。URLConnection类提供了访问网络资源时更多、更好的控制方法。使用URLConnection类来访问Web页面的步骤如下:(1)调用URL类的openConnection()方法得到一个URLConnection类的实例:URLConnection conn=url.openConnection();(2)调用以下方法,设置所有相关属性:第11章 Java网络通信程序的设计 setAllowUserInteract

12、ion()setDoInput()setDoOutput()setIfModifiedSince()setUseCaches()setRequestProperty()(3)调用connect()方法连接远程资源:conn.connect();connect()方法除了创建一个连接指定服务器的套接字连接外,还可以查询服务器以获取相应头信息(header information)。第11章 Java网络通信程序的设计 (4)连接服务器以后,使用getHeaderFieldKey()和getHeaderField()方法来枚举出头信息的所有域。此外,也可以使用如下的方法来查询标准域的内容:getC

13、ontentEncoding()getContentLength()getContentType()getData()getExpiration()getLastModified()第11章 Java网络通信程序的设计 (5)使用getInputStream()方法访问资源数据。用getInputStream()方法将返回一个输入流,此输入流和URL类的openStream()方法返回的输入流是相同的。下面我们将详细的介绍其中的一些方法。在用于连接服务器前设置连接属性(第(2)步)的几个方法中,setDoInput()和setDoOutput()这两个方法最为重要。缺省时,连接服务器后将产生一

14、个用于读取服务器数据的输入流,但不会产生用于向服务器写出数据的输出流。如果需要用到一个输出流(例如,用于向CGI Form发送数据),就必须调用 conn.setDoOutput(true);第11章 Java网络通信程序的设计 setIfModifiedSince()方法用于告诉连接:只需要在给出的日期之后被修改过的数据。setUseCaches()和setAllowUserInteraction()方法只用于Applet。setUseCaches()方法指示浏览器先检查它的高速缓存区,这样可以优化访问,如果设置其值为false,将不使用浏览器的缓存,其默认值为true。setAllowUs

15、erInteraction()允许Applet弹出一个查询用户名和密码的对话框。这些设置在Applet外部不起作用。setRequestProperty()方法设置一个名字/值对,用于说明某一特定的协议。例如,想访问一个口令保护的网页,必须进行如下设置:第11章 Java网络通信程序的设计 String input=username+:+password;conn.setRequestProperty(Authorization,Basic +input);注:用ftp协议访问一个有口令保护的文件时,将使用和上面完全不同的方法,只需要创建一个如下形式的URL:ftp:/username: 当调

16、用了connect()方法后,就可以查寻响应头信息。我们通过下面的例子来介绍如何获得头信息的所有域和值以及页面内容。第11章 Java网络通信程序的设计 例11.3 GetHeaderField.javaimport genesis.*;import .*;import java.io.*;public class GetHeaderFieldpublic static void main(String args)try第11章 Java网络通信程序的设计 URL url=new URL(http:/ conn=url.openConnection();/连接服务器conn.connect()

17、;int i=1;String key=;String value=;第11章 Java网络通信程序的设计 /逐一读出指定URL中的所有域while(key=conn.getHeaderFieldKey(i)!=null)/读出对应域的值value=conn.getHeaderField(i);Transcript.println(key+:+value);i+;/获取一个输入流InputStream in=conn.getInputStream();第11章 Java网络通信程序的设计 BufferedReader reader=n e w B u f f e r e d R e a d e

18、 r(n e w InputStreamReader(in);/打开index.hmtl文件为写做准备FileWriter fw=new FileWriter(index.html);PrintWriter pw=new PrintWriter(fw);String line=;/逐行读入页面内容while(line=reader.readLine()!=null)第11章 Java网络通信程序的设计/保存到index.html文件中pw.println(line);reader.close();pw.close();fw.close();catch(IOException e)第11章 Ja

19、va网络通信程序的设计 Transcript.println(e.getMessage();程序的运行结果如图11.4所示。第11章 Java网络通信程序的设计 图 11.4 第11章 Java网络通信程序的设计 以上输出结果展示了一个典型的HTTP请求的响应头所包含的一组域。getHeaderFieldKey()和getHeaderField()方法分别返回响应头中指定位置的域名和值。指定值基数为1,当指定值为零或大于头中域总数时,将返回null串。由于URLConnection类中没有提供获得相应头中域总数的方法,所以需重复调用getHeaderFieldKey()方法,直到返回null串

20、来确定头中域的总数。第11章 Java网络通信程序的设计 程序中同时演示了如何通过URLConnection类获取页面内容。调用URLConnection类的方法getInputStream()将返回一个InputStream类的实例,这个对象和调用URL类中openStream()返回的InputStream对象是相同的。利用这个对象,我们可以建立一个获取页面内容的输入流。运行例子后,当前目录将会生成一个index.html文件,通过浏览器打开这个文件,可以看到,结果和前面通过URL访问页面内容所得到的结果相同。此外,为了便于查询最常见的响应头域的值,Java库提供了六个更为方便的方法直接访

21、问这些域,如表11.1所示。第11章 Java网络通信程序的设计 表11.1 直接获取指定域值的方法 域 名方 法返回类型DatagetDatalongExpiresgetExpirationlongLast-ModifiedgetLastModifiedlongContent-LengthgetContentLengthintContent-TypegetContenttypeStringContent-EncodinggetContentEncodingString第11章 Java网络通信程序的设计 11.1.4 与CGI的沟通 在Java技术出现之前,用CGI(Common Gatew

22、ay Interface)来提供相互交换网络数据的方法就已广泛使用。把信息从网络浏览器发送给相应的网络服务器,例如使用电子邮件服务,通常需要填写用户名和提交密码。传统的HTML语言提供了Form标记发送格式数据。一个典型的HTML Form描述如例11.4。第11章 Java网络通信程序的设计 例11.4 form.htmlName:第11章 Java网络通信程序的设计 Email Address:通过在浏览器上打开输入以上代码的html文件,我们可以看到一个如图11.5所示的页面。第11章 Java网络通信程序的设计 图 11.5 第11章 Java网络通信程序的设计 在Internet上访

23、问邮件服务时,用户需要填写一个类似上图的表单。当用户点击提交按键后,浏览器将会发送这些填写的数据到action属性指定的服务器中的CGI程序。CGI程序负责处理这些数据,然后生成一个HTML页面,并送回浏览器。对于邮件服务,这个新的响应页通常就是我们登陆后的页面。(有关CGI程序和HTML Form的详细内容,本章将不再继续讨论,如需了解可参考有关书籍)第11章 Java网络通信程序的设计 除了处理传统的非交互式类型外,URLConnection类也提供了用于CGI或Servlet连接的功能。和HTML表单页一样,Java程序可以向服务器发出一个CGI请求,这个请求既可以设为GET,也可以设为

24、POST。此外,也可在程序中拦截CGI程序的输出,所以通过Java程序可以实现和CGI程序交互信息的全部过程。第11章 Java网络通信程序的设计 通过GET方法向CGI程序发送信息时,只需将参数置于URL的末尾,并用“?”分隔。URL的基本格式为 http:/host/script?parameters 当包含两个以上的参数时,用一个“&”分开每个参数,并对参数做以下的编码处理:用“+”代替所有的空格,用%加两位十六进制数代替所有非字母的字符(包 括 汉 字)。例 如,假 设 一 个 参 数 为“C+Language”,它将被编码为“C%2b%2b+Language”,其中2b(十进制数43

25、)就是ASCII码的“+”字符。这种编码方法避免了空格干扰,并可以解释其他字符,这种编码方式称为URL编码。第11章 Java网络通信程序的设计 GET方法非常方便,但是有一个大的限制,就是浏览器一般会限制GET请求的URL串的字符个数。而POST的方法则不同,使用POST请求的时候,不把参数放在URL的末端,而是采用建立一个到服务器的输出流的方式。通过得到一个来自URLConnection的输出流,并把参数名/值对逐个写入到输出流,就可以实现POST方法的请求。使用POST方法时,仍需用URL编码方式处理这些输入的参数,并用“&”将参数分开。第11章 Java网络通信程序的设计 下面我们仍然

26、通过一个例子来详细的了解GET和POST方法与CGI通信的过程以及它们的不同之处。例11.5 CGITest.java import genesis.*;import java.io.*;import .*;import java.util.*;public class CGITest 第11章 Java网络通信程序的设计 URL url=null;URLConnection conn=null;FileWriter fw=null;PrintWriter pw=null;public static void main(String args)CGITest test=new CGITest(

27、);ArrayList param=new ArrayList();if(args0.equals(GET)|args0.equals(get)第11章 Java网络通信程序的设计/GET方法所需要的参数param.add(p);param.add(args1);param.add(u);param.add(B);/GET方法通过Yahoo提供的搜索引擎搜索给定的关键字test.doGet(http:/ Java网络通信程序的设计 if(args0.equals(POST)|args0.equals(post)/POST方法所需要的参数param.clear();param.add(user)

28、;param.add(args1);param.add(pass);param.add(args2);param.add(type);第11章 Java网络通信程序的设计 param.add(0);param.add(verifycookie);param.add(y);/POST方法登陆163邮箱test.doPost(http:/ Java网络通信程序的设计 public String doGet(String location,java.util.List param)if(param!=null)StringBuffer bufParam=new StringBuffer();/通过一

29、个枚举器列出所有参数Iterator iterator=param.iterator();String key=null;String value=null;第11章 Java网络通信程序的设计 /枚举出所有的参数while(iterator.hasNext()key=(String)iterator.next();value=(String)iterator.next();/对参数进行编码,然后转化成key=value的格式/并将它们串在一起,通过&分隔开bufParam.append(URLEncoder.encode(key);bufParam.append(=);bufParam.ap

30、pend(URLEncoder.encode(value);第11章 Java网络通信程序的设计 if(iterator.hasNext()bufParam.append(&);/把参数连接在URL后面,用?号分隔开location+=?+bufParam.toString();StringBuffer page=new StringBuffer();第11章 Java网络通信程序的设计 tryurl=new URL(location);conn=url.openConnection();/连接服务器conn.connect();/得到一个输入流InputStream in=conn.getI

31、nputStream();BufferedReader reader=new BufferedReader(new InputStreamReader(in);第11章 Java网络通信程序的设计/打开Get.html文件准备写fw=new FileWriter(Get.html);pw=new PrintWriter(fw);String line=;/逐行读入while(line=reader.readLine()!=null)page.append(line+n);pw.println(line);第11章 Java网络通信程序的设计 pw.close();fw.close();read

32、er.close();in.close();catch(IOException e)Transcript.println(e.getMessage();第11章 Java网络通信程序的设计 return page.toString();public String doPost(String location,java.util.List param)StringBuffer page=new StringBuffer();tryurl=new URL(location);conn=url.openConnection();第11章 Java网络通信程序的设计/同时打开到服务器的输入和输出流co

33、nn.setDoOutput(true);conn.setDoInput(true);if(param!=null)/获取一个到服务器的输入通道PrintWriter out=new PrintWriter(conn.getOutputStream();Iterator iterator=param.iterator();第11章 Java网络通信程序的设计 String key=null;String value=null;/枚举列出所有参数 while(iterator.hasNext()/对参数进行编码,并逐个将参数转化成/key=value的格式,直接输出到服务器key=URLEnco

34、der.encode(String)iterator.next();value=URLEncoder.encode(String)iterator.next();第11章 Java网络通信程序的设计 out.print(key+=+value);if(iterator.hasNext()out.print(&);out.close();/连接服务器conn.connect();第11章 Java网络通信程序的设计 /获取一个输入流InputStream in=conn.getInputStream();BufferedReader reader=n e w B u f f e r e d R

35、e a d e r(n e w InputStreamReader(in);/打开Post.html准备写fw=new FileWriter(Post.html);pw=new PrintWriter(fw);String line=;/逐行读入第11章 Java网络通信程序的设计 while(line=reader.readLine()!=null)page.append(line+n);pw.println(line);pw.close();fw.close();reader.close();in.close();第11章 Java网络通信程序的设计 catch(IOException e

36、)Transcript.println(e.getMessage();return page.toString();第11章 Java网络通信程序的设计 这个例子比较长,但它并不复杂。程序中,通过两个方法:doGet()和doPost()分别实现了GET和POST两种方式与CGI的通信。在doGet()方法中,测试的是使用Yahoo提供的搜索引擎;在doPost()方法中,测试的是登陆的免费邮件系统。编译这个程序后,测试doGet()方法,可以用下面的命令行运行它:java CGITest get Java第11章 Java网络通信程序的设计 产生的结果将保存在一个叫Get.html的文件中。

37、用浏览器打开它,可以看到同在上的搜索引擎中输入“Java”搜索产生的页面相同的效果。doGet()方法需要提供两个参数,第一个参数是创建交互的CGI程序的URL,第二个参数是一个List模板类,里面存放了提供的参数。要注意的是,把这些参数串在一起并接在URL的末尾时,必须用URLEncoder类的encode()方法对参数进行URL编码。第11章 Java网络通信程序的设计 如果要测试doPost()方法,须通过下面的命令行运行这个程序:java CGITest post Username Password 要测试登陆的免费邮箱,就必须在上注册一个邮箱,并在命令行的第2、3个参数提供登陆邮箱的

38、用户名和密码。产生的结果保存在一个叫Post.html的文件中。同样,浏览这个文件看到的同在网站上登录免费邮件系统所看到的页面一样。第11章 Java网络通信程序的设计 doPost()方法同样需要提供交互用的URL和保存参数的List,但是这里我们没有把参数串在一起,而是通过URLConnection类的getOutputStream()方法打开输入流,逐个将参数写入到输出流中。这样无论有多少参数也没关系了,但要注意的是,仍然要对参数进行URL编码并用“&”将它们分开。第11章 Java网络通信程序的设计 注:由于各网站的CGI程序URL和参数可能会随着网站的 程序修改而改变,所以这个程序并

39、不能保证一直得到正确的结果,但是只需查看网站的源代码,并找到HTML Form的action以及input的所有参数,对上面例子中的程序略作修改,就可以顺利的得到正确结果了。第11章 Java网络通信程序的设计 11.2 使用使用Socket通信通信 URL和URLConnection类提供给我们一种简便的方法编写网络程序,实现一些较高级的协议访问Internet。但是通常,这些协议是不够的,我们常需要用一种更通用、更底层的方法编写网络应用程序,这就是我们最常用的套接字(Socket)通信。第11章 Java网络通信程序的设计 11.2.1 InetAddress类 Internet上的每一台

40、计算机都拥有一个惟一的地址,这样才能和其他网络上的计算机互通信息。我们常说的TCP/IP中的IP(Internet Protocal)。就是定义Internet上计算机的地址的。我们知道,一个IP地址必须由四个0255之间的数字组成,数字之间用点隔开。由于很难记忆这个由四个数字组成的地址,所以有了主机名(host name)的出现,例如,就是一个主机名。InetAddress就是用来实现IP的类。第11章 Java网络通信程序的设计 InetAddress 类的声名如下:public final class InetAddress extends Object implements Seria

41、lizableInetAddress类没有提供任何构造函数,我们只能通过它本身提供的一些静态方法来建立一个它的实例。通常,用于建立一个InetAddress类的方法有如下几种:public static InetAddress getByName(String host)throws UnknowHostException指定主机名建立一个InetAddress的实例。第11章 Java网络通信程序的设计 public static InetAddress getByAddress(byte addr)throws UnknowHostException指定IP地址建立一个InetAddres

42、s的实例。public static InetAddress getLocalHost()throws UnknowHostException建立本机的InetAddress的实例。下面我们通过一个实例来看看如何使用InetAddress类。第11章 Java网络通信程序的设计 例11.6 InetAddressDemo.javaimport genesis.*;import .*;public class InetAddressDemopublic static void main(String args)try第11章 Java网络通信程序的设计 InetAddress addr1=Ine

43、tAddress.getByName();Transcript.println(addr1.getHostAddress();InetAddress addr2=InetAddress.getByAddress(addr1.getAddress();Transcript.println(addr2.getHostName();Transcript.println();第11章 Java网络通信程序的设计 InetAddress addr3=InetAddress.getLocalHost();Transcript.println(addr3.getHostName();Transcript.p

44、rintln(addr3.getHostAddress();catch(UnknownHostException e)Transcript.println(e.getMessage();程序的运行结果如图11.6所示。第11章 Java网络通信程序的设计 图 11.6第11章 Java网络通信程序的设计 从运行结果我们可以看到,调用getByName()方法通过主机名建立一个InetAddress类的实例后,我们就可以得到对应于这个主机名的地址。需要注意的是,在调用建立InetAddress实例的几个静态方法时,这些方法会连接指定的地址或域名,如果无法连通,会抛出一个UnknowHostExc

45、eption,所以必须用try-catch块包含这个方法,并处理无法连通的情况。第11章 Java网络通信程序的设计 11.2.2 客户端Socket类 TCP/IP最主要的功能是提供点对点通信机制。一个机器要在网络上与另一台机器通信,就需要建立一个互联的通道。这个通道传输两个数据流,一个为发出的数据流,一个为接收的数据流。由于有了IP地址,我们可以方便的在Internet上找到另一台机器。假如自己的机器要和另一台机器通信,就必须向那台主机发起一个连接请求。如果这个请求被接受,这次通信过程就开始了。通常情况下,我们把发起请求的机器叫客户端,被请求的机器则称为服务器。第11章 Java网络通信程

46、序的设计 Socket类是用来编写客户端程序的类。Socket类的声明如下:public class Socket extends Objects Socket类常用的方法有下列几种:Socket(InetAddress address,int port)throws IOException建立一个Socket的实例,用来连接指定的地址和端口。Socket(String host,int port)throws UnknowHostException,IOException和上面类似,但是通过主机名代替InetAddress。第11章 Java网络通信程序的设计 public void clo

47、se()throws IOException中断该Socket连接。public InetAddress getInetAddress()返回该Socket实例所连接的地址。public InputStream getInputStream()throws IOException返回一个输入流,用来接收服务器端发送的信息。public OutputStream getOutputStream()throws IOException返回一个输出流,用来向服务器端发送信息。第11章 Java网络通信程序的设计 public int getPort()返回该Socket实例连接远程的端口。publi

48、c int getSoTimeout()throws SocketException返回接收信息的时间限制。如果返回值为0,则表示没有限制。public void setSoTimeout(int timeout)throws SocketException第11章 Java网络通信程序的设计 设置接收信息的时间限制,以千分之一秒为单位。利用InputStream接收信息时,程序会一直挂起,直到接收到信息,或者到达时间限制为止。如果出现超时,则会抛出一个java.io.InterruptedIOException。如果timeout设为0,则没有时间限制,程序会一直挂起等待。下面来看一个简单的

49、Socket编程的示例。例11.7 SocketDemo.java import genesis.*;import java.io.*;import .*;第11章 Java网络通信程序的设计 public class SocketDemopublic static void main(String args)try/构造一个连接到时间服务器time-A.timefreq.bldrdoc.gov/端口13的Socket类实例。Socket sock=new Socket(time-A.timefreq.bldrdoc.gov,13);第11章 Java网络通信程序的设计/从Socket获得一个

50、接收服务器信息的输入流BufferedReader in=new BufferedReader(new InputStreamReader(sock.getInputStream();while(true)String line=in.readLine();if(null=line)break;else第11章 Java网络通信程序的设计 Transcript.println(line);catch(IOException e)Transcript.println(e.getMessage();程序的运行结果如图11.7所示。第11章 Java网络通信程序的设计 图 11.7 第11章 Jav

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Java网络通信程序的设计.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|