JAVA局域网聊天系统源代码

合集下载

java执行windows下cmd命令的方法

java执行windows下cmd命令的方法

java执⾏windows下cmd命令的⽅法本⽂实例讲述了java执⾏windows下cmd命令的⽅法。

分享给⼤家供⼤家参考。

具体实现代码如下:复制代码代码如下://获取运⾏时Runtime rt = Runtime.getRuntime();//获取进程Process p = rt.exec(String[] cmdarray);//或者 Process p = rt.exec(String cmd);//如果p不为空,那么要清空if(null!=p){destory p.destory(); p=null;}例如:复制代码代码如下:Runtime rt = Runtime.getRuntime();Process p = rt.exec("cmd.exe /c shutdown -a");System.out.println(p.toString());cmd /c dir 是执⾏完dir命令后关闭命令窗⼝。

cmd /k dir 是执⾏完dir命令后不关闭命令窗⼝。

cmd /c start dir 会打开⼀个新窗⼝后执⾏dir指令,原窗⼝会关闭。

cmd /k start dir 会打开⼀个新窗⼝后执⾏dir指令,原窗⼝不会关闭。

可以⽤cmd /?查看帮助信息。

补充:★CMD命令★1. gpedit.msc-----组策略2. sndrec32-------录⾳机3. Nslookup-------IP地址侦测器4. explorer-------打开资源管理器5. logoff---------注销命令6. tsshutdn-------60秒倒计时关机命令7. lusrmgr.msc----本机⽤户和组8. services.msc---本地服务设置9. oobe/msoobe /a----检查XP是否激活10. notepad--------打开记事本11. cleanmgr-------垃圾整理12. net start messenger----开始信使服务13. compmgmt.msc---计算机管理14. net stop messenger-----停⽌信使服务15. conf-----------启动netmeeting16. dvdplay--------DVD播放器17. charmap--------启动字符映射表18. diskmgmt.msc---磁盘管理实⽤程序19. calc-----------启动计算器20. dfrg.msc-------磁盘碎⽚整理程序21. chkdsk.exe-----Chkdsk磁盘检查22. devmgmt.msc--- 设备管理器23. regsvr32 /u *.dll----停⽌dll⽂件运⾏24. drwtsn32------ 系统医⽣25. rononce -p ----15秒关机26. dxdiag---------检查DirectX信息27. regedt32-------注册表编辑器28. Msconfig.exe---系统配置实⽤程序29. rsop.msc-------组策略结果集30. mem.exe--------显⽰内存使⽤情况31. regedit.exe----注册表32. winchat--------XP⾃带局域⽹聊天33. progman--------程序管理器34. winmsd---------系统信息35. perfmon.msc----计算机性能监测程序36. winver---------检查Windows版本37. sfc /scannow-----扫描错误并复原38. taskmgr-----任务管理器(2000/xp/200339. winver---------检查Windows版本40. wmimgmt.msc----打开windows管理体系结构(WMI)41. wupdmgr--------windows更新程序42. wscript--------windows脚本宿主设置43. write----------写字板44. winmsd---------系统信息45. wiaacmgr-------扫描仪和照相机向导46. winchat--------XP⾃带局域⽹聊天47. mem.exe--------显⽰内存使⽤情况48. Msconfig.exe---系统配置实⽤程序49. mplayer2-------简易widnows media player50. mspaint--------画图板51. mstsc----------远程桌⾯连接52. mplayer2-------媒体播放机53. magnify--------放⼤镜实⽤程序54. mmc------------打开控制台55. mobsync--------同步命令56. dxdiag---------检查DirectX信息57. drwtsn32------ 系统医⽣58. devmgmt.msc--- 设备管理器59. dfrg.msc-------磁盘碎⽚整理程序60. diskmgmt.msc---磁盘管理实⽤程序61. dcomcnfg-------打开系统组件服务62. ddeshare-------打开DDE共享设置63. dvdplay--------DVD播放器64. net stop messenger-----停⽌信使服务65. net start messenger----开始信使服务66. notepad--------打开记事本67. nslookup-------⽹络管理的⼯具向导68. ntbackup-------系统备份和还原69. narrator-------屏幕“讲述⼈”70. ntmsmgr.msc----移动存储管理器71. ntmsoprq.msc---移动存储管理员操作请求72. netstat -an----(TC)命令检查接⼝73. syncapp--------创建⼀个公⽂包74. sysedit--------系统配置编辑器75. sigverif-------⽂件签名验证程序76. sndrec32-------录⾳机77. shrpubw--------创建共享⽂件夹78. secpol.msc-----本地安全策略79. syskey---------系统加密,⼀旦加密就不能解开,保护windows xp系统的双重密码80. services.msc---本地服务设置81. Sndvol32-------⾳量控制程序82. sfc.exe--------系统⽂件检查器83. sfc /scannow---windows⽂件保护84. tsshutdn-------60秒倒计时关机命令85. tourstart------xp简介(安装完成后出现的漫游xp程序)86. taskmgr--------任务管理器87. eventvwr-------事件查看器88. eudcedit-------造字程序89. explorer-------打开资源管理器90. packager-------对象包装程序91. perfmon.msc----计算机性能监测程序92. progman--------程序管理器93. regedit.exe----注册表94. rsop.msc-------组策略结果集95. regedt32-------注册表编辑器96. rononce -p ----15秒关机97. regsvr32 /u *.dll----停⽌dll⽂件运⾏98. regsvr32 /u zipfldr.dll------取消ZIP⽀持99. cmd.exe--------CMD命令提⽰符100. chkdsk.exe-----Chkdsk磁盘检查101. certmgr.msc----证书管理实⽤程序102. calc-----------启动计算器103. charmap--------启动字符映射表104. cliconfg-------SQL SERVER 客户端⽹络实⽤程序105. Clipbrd--------剪贴板查看器106. conf-----------启动netmeeting107. compmgmt.msc---计算机管理108. cleanmgr-------垃圾整理109. ciadv.msc------索引服务程序110. osk------------打开屏幕键盘111. odbcad32-------ODBC数据源管理器112. oobe/msoobe /a----检查XP是否激活113. lusrmgr.msc----本机⽤户和组114. logoff---------注销命令115. iexpress-------⽊马捆绑⼯具,系统⾃带116. Nslookup-------IP地址侦测器117. fsmgmt.msc-----共享⽂件夹管理器118. utilman--------辅助⼯具管理器119. gpedit.msc-----组策略120. explorer-------打开资源管理器javac 其实执⾏了只是没有输出执⾏结果因为你没有输出执⾏结果的部分如果你执⾏复制代码代码如下:Runtime.getRuntime.exec("cmd");也看不到结果因为它不是在java程序中执⾏的⽽是在操作系统上执⾏的你可以这样复制代码代码如下:Runtime.getRuntime.exec("cmd /c start javac ");就可以看到⼀个命令⾏窗。

基于JAVA的多平台聊天系统

基于JAVA的多平台聊天系统

作, 利用 H bra ie t n e对数据库进行(U D增 删改查 (ie ae C R) hbr t 将 n 在 后 面进 行 介 绍 ) 。数 据 库 是 一个 系统 的 核心 , 高 效 的 操 作 数 为 据库 ,利 用项 目 Hb ra ient 提供 的接 口服 务 来 操 作 数 据 库 , e所 完 成所 需 的最 基 本 的用 户 信 息 的保 存 、 除 、 新 、 询 操 作 。 删 更 查
【 关键宇】 A A 即时通讯 网络 跨 平台 :J V

0 引 言 、 能 作 为 客 户 端 和 服 务 器 端 维 护 持 久 通 信 的 通 信 协 议 。 由 于 随 着 因特 网 的迅 猛 ቤተ መጻሕፍቲ ባይዱ展 ,C Q MS IQ、 Q、 N等 即时 聊 天 工 具 被 c ett c et 必 要 维 护 一个 持 久 通 信 . 以客 户端 和客 户 端 h n—o l n 没 -i 所
请 求
处理 数据
验证
嚣 端
验证 发送 蠡据
斟 敦 逻 业 辑 撂 务 持 久
/ 屡 屡 L 一
接收 数 据

图 2 整 体架 构
32数 据 持久 层 ( A 对 数据 库 进 行 操作 . D O) 数 据 持 久 层 对 数 据 库 的交 互 是 不 依 赖 于 业 务 逻 辑 层 的操
3 架 构 设 计 、
3. 1整 体 架 构
服 务 器 端 整 体 采 用 了较 为 流行 的 3层 设 计 模 式 .如 图 2所
刁 。
客 户 端
客户 端 雕 务
服务 器 端
T P U P即 T PI 术 . 客 户 端 使 用 简单 的 S N C+ D C/ P技 在 WI G来 形 成 图形 化 用 户 界 面 。 务 器端 使 用 3层 设 计 模 式 , 据库 安装 在 服 服 数 务器端。

java 人工智能源代码

java 人工智能源代码

java 人工智能源代码
Java人工智能源代码主要包括一些开源项目和库,这些项目和库为Java程序员提供了实现人工智能功能的工具和框架。

以下是一些常用的Java人工智能源代码:
1.JOONE(Java面向对象的神经网络):JOONE是一个开源的Java神经网络框架,它为Java程序员提供了一种简单有效的方式来实现人工神经网络。

JOONE具有很多特性,如多线程、分布式处理等,可以大大简化神经网络实现的复杂性。

2.Weka:Weka是一个基于Java的开源机器学习库,包含了多种机器学习算法和数据挖掘工具。

Weka提供了大量的分类、回归、聚类等算法,以及数据预处理、特征选择等功能。

3.Deeplearning4j:Deeplearning4j是一个基于Java的深度学习框架,提供了神经网络、卷积神经网络(CNN)、循环神经网络(RNN)等多种深度学习算法。

4.Apache Mahout:Apache Mahout是一个开源的分布式机器学习库,提供了许多经典的机器学习算法,如聚类、推荐系统等。

5.NLTK(自然语言处理工具包):NLTK是一个开源的Java库,用于实现自然语言处理功能。

NLTK提供了丰富的文本处理、语言识别、词向量生成等功能。

这些Java人工智能源代码可以帮助您快速搭建和实现各种人工智能应用,提高开发效率。

在实际项目中,您可以根据需求选择合适的项目和库进行开发。

基于Socket接口的局域网聊天系统设计

基于Socket接口的局域网聊天系统设计

基于Socket接口的局域网聊天系统设计
李向江;赵怡涛;马雪凝
【期刊名称】《长江信息通信》
【年(卷),期】2024(37)4
【摘要】文章在对TCP/IP通信协议研究的基础上,设计一种基于Java平台的局域网即时聊天系统,系统利用Wi-Fi局域网络,采用C/S框架,各Java客户端基于Socket传输文本消息,能够实现注册、登录、在线聊天以及离线消息获取等功能。

本系统还采用了多线程技术实现多客户端与服务器的并发式通信,能有效地提高网络资源利用率,以此来缓解服务器的通信压力。

【总页数】3页(P109-111)
【作者】李向江;赵怡涛;马雪凝
【作者单位】宁波财经学院数字技术与工程学院
【正文语种】中文
【中图分类】TP309
【相关文献】
1.基于Socket接口的Linux与Windows网络聊天室设计与实现
2.基于Socket 网络编程接口实现局域网上视频传输的应用研究
3.基于socket的局域网聊天工具
4.基于Socket网络编程接口实现局域网上视频传输的应用研究
因版权原因,仅展示原文概要,查看原文内容请购买。

Java中的聊天机器人开发

Java中的聊天机器人开发

Java中的聊天机器人开发Java是一种广泛应用于软件开发领域的编程语言,具有可靠性、稳定性和跨平台特性。

随着人工智能技术的发展,聊天机器人在各个领域中得到越来越广泛的应用。

本文将介绍在Java中如何开发一个简单的聊天机器人。

一、准备工作在开始开发之前,我们需要准备以下工具和环境:1. Java开发环境(JDK)首先,确保你已经安装了最新版本的Java开发工具包(JDK),并将其配置到系统的环境变量中。

你可以从官方网站上下载并安装相应的版本。

2. 开发集成环境(IDE)选择一款适合你的开发习惯的集成开发环境(IDE),例如Eclipse、IntelliJ IDEA等。

这些IDE提供了各种功能,方便我们进行代码编写、调试和测试。

3. 聊天机器人开发框架Java中有多个开源的聊天机器人开发框架可供选择,例如ChatterBot、AIML等。

在本文中,我们将使用ChatterBot框架来开发聊天机器人。

二、ChatterBot框架介绍ChatterBot是一个基于人工智能的聊天机器人开发框架,它可以帮助我们快速创建一个智能、能够进行自然语言处理的聊天机器人。

下面是一些常用的ChatterBot框架的特性:1. 训练聊天机器人ChatterBot框架提供了一个训练模块,可以通过对话数据来训练机器人。

这些对话数据可以是从聊天记录中收集到的真实对话,也可以是根据特定领域收集的专有对话数据。

2. 使用预训练模型除了自己训练聊天机器人外,ChatterBot还提供了一些预训练的模型,可以直接使用这些模型进行聊天。

这些预训练的模型是经过大规模训练得到的,可以提供较高的聊天准确率。

3. 多语言支持ChatterBot支持多种语言,包括英语、中文、法语等。

我们可以根据自己的需求选择相应的语言进行开发和应用。

三、开发聊天机器人下面,我们将通过一个简单的示例来演示如何使用ChatterBot框架来开发聊天机器人。

1. 导入依赖首先,在你的Java项目中导入ChatterBot框架的相关依赖。

基于java的局域网飞鸽传书设计与实现讲解

基于java的局域网飞鸽传书设计与实现讲解

毕业论文(设计)题目基于Java的局域网飞鸽传书软件设计与实现系部计算机科学与工程系专业计算机科学与技术年级 2009学生姓名学号指导教师基于Java的局域网飞鸽传书软件设计与实现计算机科学与技术学生指导教师【摘要】随着移动互联网的时代已经来临,社交应用广泛存在,这些应用加强了人与人之间的沟通;从小环境来说比如校园网,以及部分局域网在内的的各种交互也广泛存在。

局域网之间的信息交互,并不一定要建立在互联网的基础上,本设计就是针对局域网这一环境,旨在通过设计基于Java程序设计语言的一个局域网内能够相互通信,和传输文件的软件,来增强自我实践能力,及了解通信软件的设计技术。

本设计是用Java语言编写的类飞鸽传书软件,可以实现简单的局域网内的主机之间的信息发送,以及文件的传输,实现较简单快速,主要采用了UDP中的数据报协议,Socket 协议实现主机之间的通信。

【关键词】局域网通信传输文件IP Messenger-software design and implementation used in LANbased on Java【Abstract】As the age of mobile and Internet is coming , social applications is widespread, and these applications enhance communication between people at the same time; On the side from the environment, such as campus network, as well as the various interactions, including the part of the LAN is also widespread. Internet for information exchange between the LAN is not necessary, this design is for the local area network designed to communicate with each other within a local area network based on the Java programming language through this design, and transfer files software to enhance the ability of self-practice,and understanding of communications software design techniques.The design,which included in the IP Messenger software is written in Java , can send information and make file transfers between the host. It is simple and fast, mainly uses the Matagorda Protocol UDP, Socket protocol communication between hosts.【Keywords】LAN,Communication, transmission File目录第一章绪论 (5)1.1研究现状 (5)1.2主要研究内容 (5)1.3论文结构 (6)第二章需求分析及技术介绍 (7)2.1软件运行环境及开发环境 (7)2.1.1开发环境配置 (7)2.2相关技术介绍 (10)2.2.1Eclipse开发工具的选择原因 (10)2.2.2Java介绍 (10)2.2.3 Java语言的图形化编程 (11)2.2.4 Java的Socket编程 (12)2.4设计目标 (12)2.4.1基本性能 (12)2.4.2开发目标 (12)第三章系统设计 (13)3.1系统概要设计 (13)3.1.1软件用例图 (13)3.1.2软件总体分析 (14)3.2系统模块功能实现 (15)3.2.1 广播模块 (15)3.2.2 发送文件模块 (16)3.2.3 设置界面模块 (17)3.2.4 文件数据导入模块 (18)3.2.5监听模块 (19)3.2.6充当服务端模块 (20)第四章软件界面设计与程序主模块实现 (22)4.1界面设计 (22)4.1.1界面布局 (22)4.1.2用户区域 (22)4.1.3聊天区域 (22)4.2主模块与功能模块的组织实现 (23)4.2.1 主程序运行界面 (23)4.2.2 MainFrame.java组成 (24)第五章软件调试与测试 (26)5.1获取用户ip功能测试 (26)5.2发送文本消息模块测试 (27)5.3文件传输模块测试 (28)5.4设置模块测试 (30)第六章总结 (31)参考文献 (32)附录 (33)致谢 (35)第一章绪论1.1研究现状移动互联网背景下,通讯软件各种各样,通讯软件在各行各业中广泛应用,对于人与人之间的通信交流加强了人们沟通,局域网内的文件传输也促进了资源共享的便利;目前比较流行的通讯软件类别是即时通讯软件。

JQQ即时通讯系统的的设计和实现

JQQ即时通讯系统的的设计和实现

本科生毕业论文(设计)论文(设计)题目:J 即时通讯系统的设计与实现学院:电子信息工程学院专业:网络工程J 即时通讯系统的设计与实现[摘要]运用Internet和Java开发技术,采用C/S模式,建立一个基于应用的即时通讯系统。

本系统实现了用户注册,用户登陆,分组管理,好友管理,查询用户,用户即时通讯,查看聊天记录等功能。

用户注册是通过系统来添加新的用户;用户登录用来验证用户的信息是否合法;分组管理功能主要是对分组的管理,如添加分组、删除分组等;好友管理功能主要是对好友的管理,如添加好友、删除好友等;查询用户是查询所有已注册的用户以便加为好友进行通讯;用户即时通讯使成为好友的双方可以即时在线交流;查看聊天记录保存了与好友通讯的所有记录。

[关键词]即时通讯系统;C/S模式;TCP;UDPJ instant messaging system design and ImplementationAbstract:The use of Internet and Java development technologies, using C / S mode, a real-time communication system based on application. The system implements user registration, user login, group administration, friends manage, query user, instant messaging, view the chat history. User registration is through the system to add new users; user login used to authenticate the user's information is legitimate; group management functions mainly for the management of groups, such as adding a group, delete group, etc.; friends management functions mainly for friends management, such as adding friends, remove friends, etc.; query the user is the query to all registered users to add as friends to communicate; users to instant messaging to become friends of the two sides can exchange real-time online; view chat history with a good save friends of the communication of all records.Key words:Instant messaging system; C / S mode; TCP; UDP目录1 绪论41.1项目背景41.2国外研究现状51.3预期目标和经济效益51.4课题简要介绍61.5系统创新点62 需求分析72.1功能需求72.1.1 用户管理72.1.2 分组管理72.1.3 好友管理72.1.4 即时通讯82.2通讯模型的特点82.2.1 适用性82.2.2 扩展性92.3可行性研究92.3.1 技术可行性分析92.3.2 不确定性分析92.3.3 分析结论92.4运行环境103 概要设计103.1框架设计103.2拓扑结构103.3功能设计133.2.1 用户注册模块133.2.2 用户登录模块133.2.3分组管理模块143.2.4 好友管理模块143.2.5 查询用户模块153.2.6 即时通讯模块153.2.7 聊天记录模块153.4设计原则与一般要求154 系统设计164.1模块设计164.2即时通讯系统关系型数据库的实现164.2.1 数据库分析174.2.2 数据库概念设计174.2.3 数据库逻辑结构设计185 系统实现185.1注册模块185.2登录模块205.3分组管理模块错误!未定义书签。

电脑运行代码大全

电脑运行代码大全

电脑运行代码大全————————————————————————————————作者:————————————————————————————————日期:开始菜单中的“运行”是通向程序的快捷途径,输入特定的命令后,即可快速的打开Windows 的大部分程序,熟练的运用它,将给我们的操作带来诸多便捷。

开始菜单--运行--CMD--输入指令下面就是指令winver 检查Windows版本wmimgmt.msc 打开Windows管理体系结构(wmi)wupdmgr Windows更新程序wscript Windows脚本宿主设置write 写字板winmsd 系统信息wiaacmgr 扫描仪和照相机向导winchat xp自带局域网聊天mem.exe 显示内存使用情况msconfig.exe 系统配置实用程序mplayer2 简易widnows media playermspaint 画图板mstsc 远程桌面连接mplayer2 媒体播放机magnify 放大镜实用程序mmc 打开控制台mobsync 同步命令dxdiag 检查directx信息drwtsn32 系统医生devmgmt.msc 设备管理器dfrg.msc 磁盘碎片整理程序diskmgmt.msc 磁盘管理实用程序dcomcnfg 打开系统组件服务ddeshare 打开dde共享设置dvdplay dvd播放器net stop messenger 停止信使服务net start messenger 开始信使服务notepad 打开记事本nslookup 网络管理的工具向导ntbackup 系统备份和还原narrator 屏幕“讲述人”ntmsmgr.msc 移动存储管理器ntmsoprq.msc 移动存储管理员操作请求netstat -an (tc)命令检查接口syncapp 创建一个公文包sysedit 系统配置编辑器sigverif 文件签名验证程序sndrec32 录音机shrpubw 创建共享文件夹secpol.msc 本地安全策略syskey 系统加密,一旦加密就不能解开,保护Windows xp系统的双重密码services.msc 本地服务设置sndvol32 音量控制程序sfc.exe 系统文件检查器sfc /scannow windows文件保护tsshutdn 60秒倒计时关机命令tourstart xp简介(安装完成后出现的漫游xp程序)taskmgr 任务管理器eventvwr 事件查看器eudcedit 造字程序explorer 打开资源管理器packager 对象包装程序perfmon.msc 计算机性能监测程序progman 程序管理器regedit.exe 注册表rsop.msc 组策略结果集regedt32 注册表编辑器rononce -p 15秒关机regsvr32 /u *.dll 停止dll文件运行regsvr32 /u zipfldr.dll 取消zip支持cmd.exe cmd命令提示符chkdsk.exe chkdsk磁盘检查certmgr.msc 证书管理实用程序calc 启动计算器charmap 启动字符映射表cliconfg sql server 客户端网络实用程序clipbrd 剪贴板查看器conf 启动netmeetingcompmgmt.msc 计算机管理cleanmgr 垃圾整理ciadv.msc 索引服务程序osk 打开屏幕键盘odbcad32 odbc数据源管理器oobe/msoobe /a 检查xp是否激活lusrmgr.msc 本机用户和组logoff 注销命令iexpress 木马捆绑工具,系统自带nslookup ip地址侦测器fsmgmt.msc 共享文件夹管理器utilman 辅助工具管理器gpedit.msc 组策略以下为Windows操作系统的常用运行命令,执行这些命令,就能打开系统对应的相关实用程序,如果大家能基本利用,就能检查并修复系统的最基本的故障,除注销,关闭系统命令外,其它所有命令,大家不妨一试!!运行\输入CMD\输入对应的相关实用程序:. 打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名).. 打开Windows XP所在的盘符下的Documents and Settings文件夹... 打开“我的电脑”选项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这是我自己做的简单聊天系统客户端package LiaoTianSys;import java.awt.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import .Socket;import .UnknownHostException;public class ConversationFrame extends JFrame {JScrollPane jsp;JTextField jtf;static JTextArea jta;//JTextArea jat1,jta2;JButton enter=new JButton("发送");JButton jb=new JButton("聊天室好友");JButton jb2=new JButton("进入聊天室");JButton jb3=new JButton("刷新在线人员列表");JPanel jp,jp1,jp3,jp4;DefaultListModel listmodel = new DefaultListModel();//static String[] NAME=new String[10];String n[]={"f"};JList list=new JList(listmodel);JLabel time=new JLabel("当前系统时间:");JLabel showtime=new JLabel("显示时间");JLabel jl=new JLabel("输聊天信息");JLabel nicheng=new JLabel("昵称");JTextField NCshuru=new JTextField(10);static DataOutputStream dos;static DataInputStream dis;//final LoginFrame lf;Socket socket;public ConversationFrame(){Container con=getContentPane();con.setLayout(new BorderLayout());jp=new JPanel();setSize(700,600);setLocation(100,100);jta=new JTextArea();jta.setEditable(false);jsp=new JScrollPane(jta);con.add(jsp,BorderLayout.CENTER);jtf=new JTextField(20);jp.add(jl);jp.add(jtf);jp.add(enter);con.add(jp,BorderLayout.SOUTH);jp1=new JPanel(new BorderLayout());JScrollPane jsp1=new JScrollPane(list);jp1.add(jsp1,BorderLayout.CENTER);jp1.add(jb,BorderLayout.NORTH);con.add(jp1,BorderLayout.EAST);//pack();jp3=new JPanel();jp3.add(nicheng);jp3.add(NCshuru);jp3.add(jb2);con.add(jp3,BorderLayout.NORTH);jp4=new JPanel(new GridLayout(10,1));jp4.add(jb3);jp4.add(time);jp4.add(showtime);new getTime(this).start();con.add(jp4,BorderLayout.WEST);setVisible(true);// 发送信息给所有人enter.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubString info=jtf.getText();try {dos.writeUTF(NCshuru.getText()+" 对所有人说:"+info);dos.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});//进入聊天室时将自己的昵称发给服务器,首先去验证是否会与已有的人同名,本聊天室是不支持同昵称聊天jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String msg=NCshuru.getText().toString();//得到昵称if(msg.length()==0){JOptionPane.showMessageDialog(null, "昵称不应该为空,", "温馨提示", RMA TION_MESSAGE);}{try{dos.writeUTF("name"+msg);dos.flush();}catch(Exception ex){System.out.println(ex.getMessage());}}}});//向服务器请求更新在线人员列表jb3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){try {listmodel.removeAllElements();//请求之前删除JList对象中的所有内容dos.writeUTF("请求更新在线人员列表");dos.flush();} catch (IOException e1) {// TODO Auto-generated catch block//e1.printStackTrace();System.out.println(e1.getMessage());}}});//当有在线人员时,双击JList列表某项弹出私聊对话框事件,匿名内部类实现的list.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if(e.getClickCount()==2){int index=list.locationToIndex(e.getPoint());// 获得list表中的索引值String recevier=(String)listmodel.getElementAt(index);//得到索引对应的值String sender=NCshuru.getText();new Danliao(sender,recevier,socket);}}});}public static void main(String[] args) {ConversationFrame Con=new ConversationFrame();Con.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Con.kaishi();}public void kaishi(){try {socket=new Socket("172.16.14.60",8888);dos=new DataOutputStream(socket.getOutputStream());dis=new DataInputStream(socket.getInputStream());pc pc1=new pc(socket,this);//传送套接字,本类对象给pc线程pc1.start();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// pc线程类,负责接收服务器发送来的信息class pc extends Thread{ ConversationFrame conver;Socket socket;public pc(Socket socket,ConversationFrame conver){this.conver=conver;this.socket=socket;}public void run(){try {int i=0;while(true){String line;//从线路读取信息line=ConversationFrame.dis.readUTF();// 将所有的在线人员昵称发送给JList,并添加到在线人列表中if(line.startsWith("N"))// 服务器发送过来的信息的格式是N+{String na=line.substring(1);try{conver.listmodel.addElement(na);System.out.println(na);}catch(Exception e){System.out.println(e.getMessage());}}//接受服务器发来的广播聊天信息else{ConversationFrame.jta.append(line+"\n");}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println(e.getMessage());}}}服务器端package LiaoTianSys;import java.io.*;import .*;import java.util.*;public class Server implements Runnable{public static final int port=8888;protected ServerSocket ss;static Vector connections;Thread connect;public Server(){try {ss=new ServerSocket(port);connections=new Vector(1000);connect=new Thread(this);connect.start();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {new Server();}public void run(){try{while(true){Socket client=ss.accept();System.out.println("客户端连接上");firstthread f=new firstthread(this,client);f.setPriority(Thread.MIN_PRIORITY);f.start();connections.addElement(f);}}catch(IOException e){System.out.println(e.getMessage());}}//向所有人发送聊天信息public void SenAll(String msg){int i;firstthread ft;for(i=0;i<connections.size();i++){ft=(firstthread)connections.elementAt(i);try{ft.out.writeUTF(msg);}catch(Exception e){System.out.println(e.getMessage());}}}//发送单聊信息的方法public void SenOne(String msg){int i;firstthread ft;/*String s1,s2,s3;s1=new String("people");s2=new String(msg.substring(2));//私信为两个字s3=s1.conString msg="我悄悄的对小花说你好啊";cat(s2);*/int begin=msg.indexOf("对");int end=msg.indexOf("说");begin=begin+1;String strNew=msg.substring(begin,end);for(i=0;i<connections.size();i++)//遍历线程,找到要发送的对象{ft=(firstthread)connections.elementAt(i);//遍历线程if(strNew.startsWith()){System.out.println();try{String MSG=msg.substring(7);ft.out.writeUTF(MSG);}catch(IOException e){System.out.println(e.getMessage());}}}}}class firstthread extends Thread{protected Socket client;String line,name=null;DataOutputStream firstout,out;DataInputStream in;Server server;public firstthread(Server server,Socket socket){this.server=server;this.client=socket;try{in=new DataInputStream(client.getInputStream());out=new DataOutputStream(client.getOutputStream());firstout=new DataOutputStream(client.getOutputStream());}catch(IOException e){server.connections.removeElement(this);}}//客户线程运行的方法,不断监听客户线路发送的来的信息,然后决定转发方式public void run(){try{while(true){line=in.readUTF();if(line.startsWith("name")){//获取当前线程firstthreadd=(firstthread)(server.connections.elementAt(server.connections.indexOf(this)));line=line.substring(4);if(==null){=line;}}//将服务器的所有在线人员的昵称发送给所有的客户端else if(line.startsWith("请求更新在线人员列表")){try{for(int i=0;i<server.connections.size();i++){firstthread c=(firstthread)(server.connections.elementAt(i));if(!=null){firstout.writeUTF("N"+);//发送昵称}}}catch(Exception e){System.out.println(e.getMessage());}}else if(line.startsWith("private")){server.SenOne(line);}//发送聊天信息给所有的pc客户端else{server.SenAll(line);}}}catch(IOException e){System.out.println(e.getMessage());}}}显示时间package LiaoTianSys;import java.text.SimpleDateFormat;import java.util.Date;public class getTime extends Thread{String time;ConversationFrame conver;public getTime(ConversationFrame conver){this.conver=conver;System.out.println("获得系统时间");}public void run(){while(true){SimpleDateFormat df=new SimpleDateFormat("HH:mm:ss");time= df.format(new Date());//System.out.println(time);conver.showtime.setText(time);try{this.sleep(1000);}catch(Exception e){System.out.println(e.getMessage());}}}public static void main(String []args){}}单聊package LiaoTianSys;import java.io.DataOutputStream;import java.io.IOException;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Danliao extends JFrame implements ActionListener{ JButton jb=new JButton("发送");JPanel jp1=new JPanel();JLabel jl=new JLabel("输入聊天信息");JTextField jtf=new JTextField(20);JTextArea jta=new JTextArea();JScrollPane jsp=new JScrollPane(jta);String recevier;String sender;Socket socket;public Danliao(String sender,String recevier,Socket socket) { this.recevier=recevier;this.sender=sender;this.socket=socket;setBackground(Color.red);setTitle("与"+recevier+"单聊");setSize(400,400);setLocation(200,200);Container con=getContentPane();con.setLayout(new BorderLayout());con.add(jsp,BorderLayout.CENTER);jp1.add(jl);jp1.add(jtf);jp1.add(jb);/*addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){//System.exit(0);//this.dispose();//this.hide();this.setVisible(false);}});*/addWindowListener(new Close(this));con.add(jp1,BorderLayout.SOUTH);jb.addActionListener(this);setVisible(true);}public void actionPerformed(ActionEvent e){ String msg=jtf.getText();jta.append(msg+"\n"+"\n");jtf.setText(null);try{DataOutputStream dos=new DataOutputStream(socket.getOutputStream());dos.writeUTF("private"+sender+"悄悄的对"+recevier+"说: "+msg);jtf.setText(null);}catch(Exception e1){e1.printStackTrace();}}public static void main(String[] args){}}//单击关闭窗口事件,隐藏单聊窗口class Close extends WindowAdapter{Danliao danliao;public Close(Danliao danliao){this.danliao=danliao;}public void windowClosing(WindowEvent e) {danliao.setVisible(false);}}。

相关文档
最新文档