第十六章 Java 网络编程.ppt
第十六章 网络通信第2页16.1 URLInternet寻址寻址Internet上的每台计算机必须能够唯一的标识出来,上的每台计算机必须能够唯一的标识出来,IP地址是用于唯一标识连接到地址是用于唯一标识连接到Internet的计算机的数字地的计算机的数字地址。址。IP地址实际上是由地址实际上是由32位二进制数组成,如:位二进制数组成,如:210.46.102.123,符号形式如:,符号形式如:IP地址唯一标识了地址唯一标识了Internet上的计算机,而上的计算机,而URL则标识了则标识了这些计算机上的资源。更具体地说,这些计算机上的资源。更具体地说,URL充当了一个指针,充当了一个指针,指向指向web上的上的web页、二进制文件以及其他的信息对象。页、二进制文件以及其他的信息对象。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第3页16.1 URL统一资源定位符(统一资源定位符(URL)浏览器的地址里输入的网站地址叫统一资源定浏览器的地址里输入的网站地址叫统一资源定位符(位符(URL,Uniform Resource Locator)。当在浏览器的地址框中输入一个当在浏览器的地址框中输入一个URL或是单击或是单击一个超链接时,一个超链接时,URL就确定了要浏览的地址。就确定了要浏览的地址。浏览器再通过超文本传输协议浏览器再通过超文本传输协议(HTTP,Hypertext Transfer Protocol)将将Web服务器上站点的网页代码提取出来,并解服务器上站点的网页代码提取出来,并解释成漂亮的网页。这样就可以由释成漂亮的网页。这样就可以由URL查找到查找到WWW资源,如资源,如Web网页、文本文件、图形图网页、文本文件、图形图象文件和音频视频文件等。象文件和音频视频文件等。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第4页16.1 URLURL组成组成例如:例如:http:/ 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第5页16.1 URL用用Java实现实现URL在在Java中,中,包里面的类是进行网络编程的,其包里面的类是进行网络编程的,其中中.URL类类.URLConnection类使编程类使编程者能很方便的利用者能很方便的利用URL在在internet上进行网络通信。常上进行网络通信。常用用URL类有以下几种构造方法:类有以下几种构造方法:URL(String spec)URL(String protocol,String host,int port,string file)URL(String protocol,String host,int port,string file,URLStreamHandler handler)URL(String protocol,String host,String file)URL(URL context,String spec)URL(URL context,String spec,URLStreamHandler handler)面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第6页16.1 URL最简单的构造方法内可以简单的用一个字符串生成最简单的构造方法内可以简单的用一个字符串生成URL对象,如:对象,如:URL u=new URL(“http:/ u=new URL(“http”,” 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第7页16.1 URL另外还可以构造相对的另外还可以构造相对的URL对象,例如对象,例如URL u=new URL(base,”#bookmark”);这种构造方法经常会用于这种构造方法经常会用于Java Applet,例如获例如获取本取本Applet所在目录内的所在目录内的“A.txt”文本文本URL对象可以表示为:对象可以表示为:URL ur11=new URL(getDocumentBase(),”A.txt”);或者是:或者是:URL ur12=new URL(getCodeBase(),”A.txt”);面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第8页16.1 URL在构造在构造URL对象而使用其构造方法时会抛出对象而使用其构造方法时会抛出MalformedURLException非运行时异常,因此非运行时异常,因此生成生成URL对象时,必须对这一异常进行处理。例对象时,必须对这一异常进行处理。例如:如:tryURL myURL=new URL(“http:/ e)e.printStackTrace();面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第9页16.1 URL成功创建了成功创建了URL对象后,就可以练习其他有趣的对象后,就可以练习其他有趣的java网络功能了,例如,可以在网络功能了,例如,可以在Applet中链向另中链向另外的外的web页面,下面的代码就能实现这个功能:页面,下面的代码就能实现这个功能:getAppletContext().showDocument(url);getAppletContext()方法是在方法是在Applet类中定义的,类中定义的,所以在小应用程序中可以放心使用。所以在小应用程序中可以放心使用。showDocument()实际上完成定位到另一个实际上完成定位到另一个web页面的工作,程序页面的工作,程序中只需要提供中只需要提供URL,其他工作由其他工作由java自动完成自动完成.请请看看example11_1面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第10页16.1 URL通过通过URL对象可以调用它的方法来获得对象可以调用它的方法来获得URL各部分属性,各部分属性,以下的方法是以下的方法是URL类对象常用到的方法:类对象常用到的方法:getDefaultport():返回缺省的端口号。返回缺省的端口号。getFile():获得获得URL指定资源的完整文件名指定资源的完整文件名getHost():返回主机名。返回主机名。getPath():返回指定资源文件目录和文件名返回指定资源文件目录和文件名getPort():返回端口号,默认返回端口号,默认-1getProtocol():返回表示返回表示URL中协议的字符串对象。中协议的字符串对象。getRef():返回返回URL中的中的HTML文档标记,即文档标记,即#号标记。号标记。getUserInfo():返回用户信息。返回用户信息。toExternalForm():返回完整的返回完整的URL字符串。字符串。toString():返回完整返回完整URL字符串。字符串。例例testURL.java面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第11页16.1 URL从网络上获得资源从网络上获得资源Java程序使用程序使用URL目的就是从网络上获取声音、目的就是从网络上获取声音、图象、图象、HTML文档及文件数据等资源,以便对文档及文件数据等资源,以便对获得资源进行处理。例如获得资源进行处理。例如Java程序可以每隔一程序可以每隔一定时间读取某网络结点提供的最新数据,并以定时间读取某网络结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先图表的形式显示出来。在编程处理上,一般先生成一个生成一个URL类型的对象,然后用类型的对象,然后用Java中相应中相应的方法获取该对象所代表的资源。的方法获取该对象所代表的资源。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第12页16.1 URL获取图象获取图象Java Applet 可以直接从所在的目录下找到指定的图象文件,可以直接从所在的目录下找到指定的图象文件,例如以下代码:例如以下代码:public void init()Image img=getImage(getDocumentBase(),”test.gif”);小程序在初始化的时候先用小程序在初始化的时候先用getImage(getDocumentBase(),图象文件名)从图象文件名)从HTML文档所在位置调用图象文档所在位置调用图象“test.gif”,并由此生成一个并由此生成一个Image类型的对象类型的对象image。另外还可以从网另外还可以从网络上其他节点获取图像,关键是创建对应于网络节点的络上其他节点获取图像,关键是创建对应于网络节点的Image类型的对象,在获得类型的对象,在获得Image类型对象之后便可以对其类型对象之后便可以对其进行任何可能的图像操作。小程序采用进行任何可能的图像操作。小程序采用getImage(new URL(url)方法来获得指定网络资源路径上的图像。例:方法来获得指定网络资源路径上的图像。例:testGetImag面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第13页16.1 URL获取声音获取声音Java从网络上获取声音文件并播放声音的编程从网络上获取声音文件并播放声音的编程方法有两类,一类是利用方法有两类,一类是利用Applet类提供的类提供的play(URL)及及play(URL,String)直接播放网络直接播放网络上的声音文件,另一类是通过上的声音文件,另一类是通过getAudioClip(URL)或或getAudioClip(URL,String)先从网络上获取声先从网络上获取声音文件,并生成音文件,并生成AudioClip类型的对象,然后类型的对象,然后对该对象进行操作。对该对象进行操作。例例testGetSound.java面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第14页16.1 URL获取文档获取文档利用利用Java.applet.Applet提供的提供的getAppletContext().showDocument(URL)可以显示其他节点的可以显示其他节点的HTML 文档,在调用这个文档,在调用这个方法之前还要首先指定文档的网络资源的方法之前还要首先指定文档的网络资源的URL。例:例:testGetDoc.java面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第15页16.2 InetAddressInternet寻址寻址(续续)包可以用包可以用32位位int形式来操作形式来操作32位的位的IP地址(即地址(即Internet主机地址)。类主机地址)。类InetAddress实际上是可以把实际上是可以把Internet地址换地址换算成代表该地址的对象。算成代表该地址的对象。java就是靠这个类来就是靠这个类来显示显示Internet地址以及相关信息的。地址以及相关信息的。InetAddress有以下常用的方法,这些方法在有以下常用的方法,这些方法在网络编成上是相当重要的:网络编成上是相当重要的:面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第16页16.2 InetAddress getAddress():返回返回IP地址的字节形式地址的字节形式.getAllByName():返回指定主机名的返回指定主机名的ip地址地址.getByAddress():返回指定字节数组的返回指定字节数组的ip地址形式地址形式.getByName():返回主机地址的字符串形式返回主机地址的字符串形式.getHostAddress():返回指定主机名的返回指定主机名的ip地址对象地址对象.getHostName():返回主机名返回主机名.getLocalHost():返回当前主机名返回当前主机名.hashCode():返回返回InetAddress对象的哈希码对象的哈希码.toString():返回地址转换成的字符串返回地址转换成的字符串.面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第17页16.2 InetAddressInetAddress类没有提供构造函数类没有提供构造函数,所以不能用所以不能用new方法来创建它的对象方法来创建它的对象,而只可以调用静态方法而只可以调用静态方法gerLocalHost()、getByName()、getByAddress()等来生成等来生成InetAddress类的实例。例如获得本地主机的类的实例。例如获得本地主机的Internet地址对象实例可以是:地址对象实例可以是:InetAddress ia=InetAddress.getLocalHost();要测试剩下的几个方法,程序运行的主机首先必须要测试剩下的几个方法,程序运行的主机首先必须联到联到Iternet上活动的上活动的TCP/IP网上。其中原因就是它网上。其中原因就是它需要通过域名系统才能查到真正的域名。需要通过域名系统才能查到真正的域名。例:例:testInetAddress.java及结果截图及结果截图面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第18页16.3 网络套接字网络套接字套接信道读取套接信道读取IP地址标识地址标识Internet上的计算机,端口号标识上的计算机,端口号标识正在计算机上运行的进程(程序)。正在计算机上运行的进程(程序)。端口号与端口号与IP地址组合得出一个网络套接字地址组合得出一个网络套接字。端口号被规定为一个端口号被规定为一个16位的整数位的整数065535,其,其中中01023被预先定义的服务通信占用被预先定义的服务通信占用(如(如telnet占用端口占用端口23,http占用端口占用端口80等)除非等)除非我们需要访问这些特定服务,否则,就应该使我们需要访问这些特定服务,否则,就应该使用用102465535这些端口中的某一个进行通信,这些端口中的某一个进行通信,以免发生端口冲突。以免发生端口冲突。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第19页16.3 网络套接字网络套接字对于超出了对于超出了URL和和URLConnection类所提供类所提供的连网应用程序,例如,对于其他协议应用程的连网应用程序,例如,对于其他协议应用程序,序,Java提供了套接口(提供了套接口(Socket)和服务套接和服务套接口类(口类(ServerSocket)作为标准的作为标准的TCP套接口套接口编程技术的抽象,通过他们以及编程技术的抽象,通过他们以及Java其他包中其他包中的类尤其是的类尤其是I/O流的类,可以实现主机与主机流的类,可以实现主机与主机之间的对话,甚至于常见的聊天室应用的程序。之间的对话,甚至于常见的聊天室应用的程序。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第20页16.3 网络套接字网络套接字套接信道一般都是端到端的,所以它是双方面的,套接信道一般都是端到端的,所以它是双方面的,两端都有各自的两端都有各自的IP地址和主机名等网络信息,一地址和主机名等网络信息,一个套接信道的两端都分别于两个主机建立套接关个套接信道的两端都分别于两个主机建立套接关系,当这种套接关系确定好以后就可以进行端到系,当这种套接关系确定好以后就可以进行端到端的消息通信。这种形式中所涉及的两端一般是端的消息通信。这种形式中所涉及的两端一般是把一端称之为客户端,而另一端称为服务器端。把一端称之为客户端,而另一端称为服务器端。服务器端会执行一个总是进行的线程用来监听特服务器端会执行一个总是进行的线程用来监听特定端口的情况,当接收到客户端发送的定端口的情况,当接收到客户端发送的“握手握手”请求之后,创建与客户端的连接,这样就完成了请求之后,创建与客户端的连接,这样就完成了端与端之间的连接,这以后就可以进行端与端之端与端之间的连接,这以后就可以进行端与端之间信息发送了。间信息发送了。面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第21页16.3 网络套接字网络套接字套接口套接口(Socket)客户端的程序使用客户端的程序使用Socket类建立与服务器的套接字连类建立与服务器的套接字连接。接。Socket是网络上运行的两个程序间双向通信的一端是网络上运行的两个程序间双向通信的一端,它既可以接受请求它既可以接受请求,也可以发送请求也可以发送请求,利用它可以较为利用它可以较为方便的编写网络上数据的传递方便的编写网络上数据的传递.在在Java中中,有专门的有专门的Socket类来处理用户的请求和响应类来处理用户的请求和响应.利用利用Socket类的类的方法方法,就可以实现两台计算机之间的通信就可以实现两台计算机之间的通信.这个套接口这个套接口的类就是的类就是.Socket,他有很多种构造方法来创建他有很多种构造方法来创建不同形式的不同形式的Socket对象对象.面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第22页16.3 网络套接字网络套接字Socket()Socket(InetAddress address,int port)Socket(InetAddress host,int port,boolean stream)Socket(InetAddress addr,int port,InetAddress Addr,int localport)Socket(SocketImpl impl)Socket(String host,int port)Socket(String host,int port,boolean stream)Socket(String host,int port,InetAddress localAddr,int localport)面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第23页16.3 网络套接字网络套接字其中其中InetAddress对象表示将要连接的地址对象表示将要连接的地址,port表示连接的地址的端口表示连接的地址的端口,host表示连接地址的主机表示连接地址的主机名名.在创建套接口之后在创建套接口之后,最好是设置它的有效期限值最好是设置它的有效期限值,这将决定应用程序将为数据的到达而等待多长时这将决定应用程序将为数据的到达而等待多长时间间,当时间到了的时候当时间到了的时候,接口将断开接口将断开,这样就从一方这样就从一方面节约了网络上的通道资源面节约了网络上的通道资源.这个有效期的设定是这个有效期的设定是用用Socket对象的对象的setSoTimeOut(int)方法来完成方法来完成实现的实现的,方法在时间到达期限的时候将会引发方法在时间到达期限的时候将会引发InterruptedIOException.例如设置等待有效期是例如设置等待有效期是1m,则它的表现形式为则它的表现形式为:面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第24页16.3 网络套接字网络套接字trysocket s=new Socket();catch(IOException e)trys.setSoTimeOut(60000);catch(InterruptedIOException e)s.close();e.printStackTrace();面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第25页16.3 网络套接字网络套接字其中其中setSoTimeOut()方法的入口参数表示的时间是毫秒方法的入口参数表示的时间是毫秒时间,建立时间,建立Socket时可能发生时可能发生IOException例外。例外。Socket类还有以下常用的方法来帮助实现端口的套接等类还有以下常用的方法来帮助实现端口的套接等功能:功能:Close():关闭套接口关闭套接口.getchannel():返回和此套接口连接的通道返回和此套接口连接的通道.getInetAddress():返回和此套接口连接的地址对象返回和此套接口连接的地址对象.getInputStream():返回和此套接口链接的输入流返回和此套接口链接的输入流getLocalAddress():返回套接口本地的地址对象返回套接口本地的地址对象.getLocalport():返回套接口本地的地址端口返回套接口本地的地址端口.getOutputStream():返回和此套接口连接的输出流返回和此套接口连接的输出流.getPort():返回和此套接口连接的地址端口返回和此套接口连接的地址端口.isClosed():判断此套接口是否关闭判断此套接口是否关闭.isConnected():判断此套接口是否断开判断此套接口是否断开.shutdownInput():关闭套接口的输入流关闭套接口的输入流.shutdownOutPut():关闭套接口的输出流关闭套接口的输出流.toString():返回套接口字符串返回套接口字符串.面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第26页16.3 网络套接字网络套接字当套接字连接当套接字连接socket建立后,可以想象一条通信建立后,可以想象一条通信“线路线路”已经建立起来。已经建立起来。Socket可以使用可以使用getInputStream()获得一个输入流,然后用这个输入流读取服务获得一个输入流,然后用这个输入流读取服务器放入器放入“线路线路”的信息,还可以使用方法的信息,还可以使用方法getOutputStream()获得一个输出流,用这个输出流将信息写入获得一个输出流,用这个输出流将信息写入“线路线路”。在实际编写程序时,当需要向指定的套接口接收在实际编写程序时,当需要向指定的套接口接收可能会有的输入流的时候可能会有的输入流的时候,需要从套借口获得输入需要从套借口获得输入流流,然后再用其他过滤器流加在这个基本输入流之然后再用其他过滤器流加在这个基本输入流之上上,最后进行流的信息的读取最后进行流的信息的读取.面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第27页16.3 网络套接字网络套接字例如以下代码形式完成了读取套接口输入流信息例如以下代码形式完成了读取套接口输入流信息的操作的操作.TryBufferedReader br=new BufferedReader(new InputStreamReader(new Socket().getInputStream();/br.read()br.close();catch(Exception e)e.printStacktrace();面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第28页16.3 网络套接字网络套接字同理同理,下面的代码也完成了向套接口发送数据流的操下面的代码也完成了向套接口发送数据流的操作作.TryprintWriter pw=new PrintWriter(new OutputStreamWriter(new Socket).getOutputstream(),true);/pw.println()pw.close();catch(Exception e)e.printstackTrace();面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第29页16.3 网络套接字网络套接字服务器套接口服务器套接口我们已经知道客户端负责建立客户到服务器的套我们已经知道客户端负责建立客户到服务器的套接口连接,即客户负责呼叫。因此服务器必须建接口连接,即客户负责呼叫。因此服务器必须建立一个等待接受客户套接字的服务器套接字。立一个等待接受客户套接字的服务器套接字。Java中有一个专门用来建立中有一个专门用来建立Socket服务器的类服务器的类,名叫名叫ServerSocket,可以用服务器需要使用的端可以用服务器需要使用的端口号作为参数来创建服务器对象口号作为参数来创建服务器对象,用来监听网络上用来监听网络上对某端口的请求对某端口的请求.这个类也是包含在这个类也是包含在包中包中的的,建立服务器套接口可能发生建立服务器套接口可能发生IOException异常,异常,它有以下几个构造方法它有以下几个构造方法:面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第30页16.3 网络套接字网络套接字ServerSocket()ServerSocket(int port)ServerSocket(int port,int backlog)ServerSocket(int port,int backlog,InetAddress bindAddr)其中最常用的就是其中最常用的就是ServerSocket(int port)方法方法,它它指定了指定了Socket服务器对指定服务器对指定port端口的监听端口的监听,port必必须和客户呼叫的端口号相同。其形式是须和客户呼叫的端口号相同。其形式是:面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第31页16.3 网络套接字网络套接字tryServerSocket server=new ServerSocket(9999);catchIOException e)这条语句创建了一个服务器对象这条语句创建了一个服务器对象server,这个服务器使这个服务器使用用9999号端口号端口,服务器对象服务器对象server便响应这个连接便响应这个连接,并且这个服务器对象会调用它的一个最重要的方法并且这个服务器对象会调用它的一个最重要的方法accept()方法来创建一个新的方法来创建一个新的Socket对象对象.服务器端便可以服务器端便可以利用这个利用这个Socket对象与客户进行通信对象与客户进行通信.其中其中accept()方法是返回一个方法是返回一个Socket对象对象,他也可能产生他也可能产生IOException异常,它的表现形式是异常,它的表现形式是:面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第32页16.3 网络套接字网络套接字trySocket client=server.accept();catch(IOException e)获得服务器端的获得服务器端的Socket对象之后对象之后,就建立了客户端和服就建立了客户端和服务器的连接务器的连接,然后服务器可以利用这个然后服务器可以利用这个Socket对象对象client来进行普通的消息传递等工作来进行普通的消息传递等工作,执行的形式是执行的形式是和上一节相同的和上一节相同的,只是完成不同的功能罢了只是完成不同的功能罢了,在执行在执行完服务器端的程序之后完服务器端的程序之后,应当进行应当进行Socket和和ServerSocket对象关闭的操作对象关闭的操作,即分别调用各自的即分别调用各自的close()方法方法.面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第33页16.3 网络套接字网络套接字ServerSocket对象的其他方法大部分和对象的其他方法大部分和Socket对象的方法相似对象的方法相似,其中常用的方法如下其中常用的方法如下:accept():返回与服务器端建立连接的机器套接口返回与服务器端建立连接的机器套接口.close():关闭服务套接口关闭服务套接口.getChannel():返回服务套接口通道返回服务套接口通道.getInetAddress():返回本机的地址对象返回本机的地址对象getLocalPort():返回服务器所绑定的监听端口号返回服务器所绑定的监听端口号.getSoTimeout():返回服务套接口限制的时间数返回服务套接口限制的时间数isClosed():判断服务套接口是否关闭判断服务套接口是否关闭setSoTimeout(int timeout):设定服务套接口所需等到的设定服务套接口所需等到的时间限度时间限度toString():返回服务套接口字符串返回服务套接口字符串面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第34页16.3 网络套接字网络套接字编写服务器系统编写服务器系统客户端方面的程序比较简单,它一般是一个单线程,客户端方面的程序比较简单,它一般是一个单线程,而服务器端是一个多线程的处理方式。而服务器端是一个多线程的处理方式。编写服务器系统程序的步骤一般是如下几步:编写服务器系统程序的步骤一般是如下几步:第一步:创建服务套接口对象,同时需要指定绑第一步:创建服务套接口对象,同时需要指定绑定端口。定端口。第二步:获得与客户连接的套接口第二步:获得与客户连接的套接口第三步:创建与客户对话的单线程对象第三步:创建与客户对话的单线程对象第四步:单线程启动运行第四步:单线程启动运行第五步:关闭服务器套接口对象第五步:关闭服务器套接口对象面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009第35页16.3 网络套接字网络套接字以上过程中,由于服务器是始终监听指定端口的,以上过程中,由于服务器是始终监听指定端口的,所以简单的可以用死循环所以简单的可以用死循环while(true)实现这一操作;实现这一操作;例:例:example11_2_client.java,example11_2_server.java面向对象程序设计面向对象程序设计Java 黑龙江大学软件学院黑龙江大学软件学院 版权所有版权所有 2009