《聊天室系统》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
聊天室系统。。本章所要介绍的开发案例就是利用JAVA实现一个简单的系统。 系统 网络聊天室是典型的网络应用程序,其一般采用客户/服务器结构来完成整个功能的设计,下面将概要讨论网络聊天室系统的设计。 7.1.1客户/服务器模式 一般聊天室采用的是客户/服务器模式,我们熟悉的QQ聊天室就是采用这种结构模式。它包含了两个完整的应用程序,即客户端程序和服务器端程序,如图4-1所示。其中,多个客户端程序可以同时与一个服务器进行通信,然后通过服务器的统一处理而完成聊天室各种所需要的功能,如各客户端之间的信息发送和接收。 图-1 ICQ的客户与服务器模式 Socket类的构造函数一般有四种方式。 表7-1 Socket类的构造函数 构造函数 抛出异常 说明 Socket(String host, int port) UnknownHostException, IOException 建立连接到特定主机和端口的套接字连接到指定的IP地址和端口的套接字它绑定到特定的本地地址和本地端口建立连接到指定的地址和端口的套接字,并把它绑定到特定的本地地址和本地端口Public InetAddress getInetAddress() //返回连接到套接字的远程主机的InetAddress。Public InetAddress getLocalAddress() //返回与套接字关联的本地InetA getPort() //返回套接字连接到的远程服务的端口号。int getLocalPort() //返回该套接字绑定在本地计算机上的端口号。InputStream getInputStream()产生java.io.IOException异常返回一个输入流,它从该套接字连接到的应用程序读取信息。OutputStream getOutputStream()产生java.io.IOException异常返回一个输出流,它向套接字连接到的应用程序写入信息。void close()产生java.io.IOException异常关闭套接字连接。用服务器所在机器的ip以及服务器的端口作为参数创建一个Socket对象getInputStream和getOutputStream方法来创建输入输出流。 3.使用输入输出流对象相应的方法来完成客户端与服务器端的开发 7.2.2 DatagramSocket和DatagramPacket类 DatagramSocket是一种面向无连接的数据报socket。由于不能建立连接,数据报服务不能保证所有的数据都能准确有序的到达目的地,但它的速度比有连接协议快,而且像聊天室这种网络应用程序对可靠性要求不是很高,故其也用的非常普遍。本聊天室就是利用该类来发送和接收数据。 接收数据报 同Socket连接类似,数据报的接收也需要一个DatagramSocket类用来监听本地主机上的指定端口,当有数据接收时创建一个DatagramPacket对象实例,调用DatagramSocket的receive方法来接收数据,这一过程可以重复进行。在其它编程语言中也有类似的过程。 下面给出Java接收数据报典型的程序片断。 //为接收数据报分配缓冲区 Byte[] buffer = new byte[500]; //为接收数据报实例化DatagramPacket和DatagramSocket DatagramPacket datagramPacket = new DatagramPacket(buffer,buffer.length); DatagramSocket datagramSocket = new DatagramSocket(8000); //接收数据处理 While(true) //无限循环 { datagramSocket.recieve(datagramPacket); String s = new String(buffer,0,0,packet.getLength()); } 发送数据报 发送数据报首先创建DatagramPacket实例,指定其所发送的数据缓冲区、数据长度、目的地主机名和端口号,然后再使用DatagramSocket的send()方法来发送。 下面给出Java发送数据报典型的程序片断。 //为发送数据报分配缓冲区 Byte[] buffer = new byte[500]; //为发送数据报实例化DatagramPacket和DatagramSocket DatagramPacket datagramPacket = new DatagramPacket(buffer,buffer.length,address,8000); DatagramSocket datagramSocket = new Dat

文档评论(0)

14576 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档