JavaSocket网络聊天工具.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文档。上传文档
查看更多
报 告 书 目 录 一、需求分析 …………………………………………………………… 2 二、模块说明 …………………………………………………………… 3 三、任务进度表 ………………………………………………………… 4 四、测试结果 …………………………………………………………… 5 五、设计小结 …………………………………………………………… 6 六、用户使用说明 ……………………………………………………… 7 七、参考文献 …………………………………………………………… 7 需求分析 本项目即设计一个网络聊天程序,并根据这个程序说明TCP连接的建立,套接字Socket的使用,以及端口等问题。用现在最流行的网络开发语言java实现,其界面简洁。 “网络聊天工具”程序显现了网络编程的两个特点:信息共享和服务器主动向所有客户端广播消息以及客户端向其他客户端发布消息。“网络聊天工具”程序的原理是:服务器程序监听一端口,等待客户接入;同时构造一个线程类,准备接管对该客户的服务。当一个客户端连接了服务器后,创建一个线程类对象,专门处理这个客户端与服务器之间的信息传递,然后主程序继续监听端口。当一个客户端向服务器发送信息后,服务器将这个信息传递给所有连接的客户端,从而实现信息共享。 系统功能结构图 模块说明(模块功能、变量命名说明) 在实际编程中看,将编写4个类来实现“网络聊天工具”程序。 ChatServer类:ChatServer类用来建立服务器端,其IP地址为运行该程序的计算机的地址,端口为8189.设定该服务器只能够处理10个线程,也就是说只能有10个人在线聊天。ChatHandler类型数组chatters用户来保存当前运行的线程。当有客户端与服务器相连后,ChatServer类会创建一个ChatHandler类对象与该客户对应,并将该客户端对应的ChatHandler类对象从chatters数组除去。ChatServer类的broadcastMeeage()方法用来将获取的信息发送给所有连接的客户端。returnUsernameList()方法用来返回所有连接的客户端的用户名。 代码如下: import java.net.*; import java.io.*; public class ChatServer { final static int thePort=8189;//设定服务端接口为8189 ServerSocket theServer; ChatHandler[] chatters; //用来保存所有正在运行的ChatHandler类对象线程 int numbers=0; //当前正在运行的chatHandler类对象线程的个数 public static void main(String[] args) { ChatServer app=new ChatServer(); //创建程序对象app app.run(); } /*创建服务器端*/ public ChatServer(){ try{ theServer=new ServerSocket(thePort); chatters=new ChatHandler[10]; //服务器最多可以同时处理10个线程 }catch(IOException io){} } /*运行服务器端,接受客户端的连接申请*/ public void run(){ try{ System.out.println(服务器已经建立!); while (numbers10){ Socket theSocket=theServer.accept(); ChatHandler chatHandler=new ChatHandler(theSocket,this); chatters[numbers]=chatHandler; //将新线程添加到数组中 numbers++; //当前运行线程数加1 } }catch(IOException io){} } /*当摸个客户端与服务器端断开连接时,将其从chatters数组中去除*/ public synchronized void removeConnectionList(ChatHandler c){ int index=0;//保存断开连接的服务器所在的下标值 for(int i=0;i=numbers-1;i++) if(chatters[i]==c) i

文档评论(0)

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

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

1亿VIP精品文档

相关文档