java网络聊天程序.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java网络聊天程序

java网络聊天程序-Javacode 2008年03月27日 星期四 00:46 A.M. java网络聊天程序-Javacode 设计思路 Socket是实现client/server模式的通信方式,它首先要建立稳定的连接,然后以流的方式传输数据,实现网络通信。使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端监听某个端口是否有连接请求,Client端向Server端发出连接请求,Server端向Client端发回接受消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 因为在创建socket时如果发生错误,将会产生IOException,所以在创建ServerSocket和Socket时我用了try-catch-finally语句捕获和处理异常,并通过JOptionPane给用户发出提示。 本程序接收消息的模块使用了教材上的由Socket对象得到输入流,并构造相应的BufferedReader对象的方法,而发送模块是通过构造PrintWriter对象并将数据输出到Server的方法,因为对输出来说,使用Writer方式具有明显的优势。这一优势是通过PrintWriter表现出来的,它有一个过载的构建器,能获取第二个参数:一个布尔值标志,指向是否在每一次println()结束的时候自动刷新输出。每次写入了输出内容后,它的缓冲区必须刷新,使信息能正式通过网络传递出去。这样就能保证信息每次能够及时准确地从发送端发出。 在设计本程序时我还特意将发送消息的日期和时间跟消息一起发送到接收端,这样可以方便用户阅读聊天记录。 设计GUI界面时我用了最常见的模型,即上面有个JTextArea存放聊天记录,下面的JTextArea让用户输入信息,最下方还有三个按钮,用于发送信息,清空记录和关闭窗口。 本程序加入了GUI界面有以下三个原因: 1.由于本程序要实现全双工的网络通信,如果要在DOS界面下实现这种通信方式只有用到多线程,这样就增加了程序 的复杂程度,也更容易出错。而用GUI界面只要对原有程序稍加改动就可以通过JButton事件处理程序实现实时收发 功能而不受顺序的限制。而用同样的核心代码不加GUI界面只能实现半双工的通信模式。 2.在DOS界面下通信只能发英文而不能发中文,而用GUI界面就可以实现中文的收发。 3.GUI界面在人机交互方面更加友好,更加方便,使用起来更顺手。 以下是程序的主要设计思路: 1.先在Server端创建一个ServerSocket监听本机的6789端口,等待客户端的连接请求。 2.Client端启动后,会向客户端的6789端口发出连接请求,当Server端收到请求后会由ServerSocket通过accept()方法返回一个对应的Server端Socket与Client端进行连接,连接后两台机器间就建立了一个Socket——Socket的连接,继而实现Socket之间的通信。此时Server端和Client端就基本没有什么差别了,发送和接收信息都是一样的。 3.创建一个无限循环,由Socket分别得到输入输出流,构造BufferedReader对象存放得到的输入流,并读出输入流中的数据,显示在聊天记录对话框中。用输出流构造一个PrintWriter对象。此时程序的接收功能就有了。 4.用事件处理程序控制信息的发送,当发送按钮按下时,从聊天对话框中取出输入的字符串,并向接收端发送该字符串,刷新输出流,使接收端马上收到该字符串。 5.当按下清除记录按钮时清空所有对话框中的字符。 6.按下关闭按钮时,关闭所有连接并退出程序。此时另一端没有关闭的程序会弹出一个对话框告诉用户连接已经断开。 设计模型 Server端: Client端: 主要程序描述 Server端: public TCPServer() { //调用方法createUserInterface() createUserInterface(); //用try和catch实现异常的捕获和抛出 try { //在与客户端的连接没有建立之前将GUI组件设为不可用 chatJTextArea.setEditable( false ); sendJButton.setEnabled( false ); clearJButton.setEnabled( false ); //在端口6789建立监听socket,并在historyJTextArea中显示提示语 ServerSocket welcomeSocket=new ServerSocket( 6789 ); historyJTextArea.append( 等待连接...+\n ); //当监听socket

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档