思路:

1.服务端:

1.1 创建ServerSocket 监听本地端口

1.2 循环接收多个客户端的连接,并且把多个客户端连接的每个管道都为其创建线程。

服务端类的成员:链表--每个成员都是线程类----也就是装载多个线程的容器

线程类(管道类)成员:(每个线程类包含一根管道所拥有的输入流,输出流,线程名字(也就是客户端用户登陆的名字),线程标识)

1.3 功能:

1.30---- 构造器的初始化线程类的成员---------还要记得把新进来的客户端线程加入线程池

1.31---- 提示客户端"欢迎xxx回来"-----(这个要在线程创建的时候(也就是收到客户端连接的时候)就提示)

1.32---- 接收客户端的数据---并借助转换流转换为String类型,并返回该值

1.33---- 发送数据给本管道另一端的客户端  (发送欢迎xxxx回来) ,(发送数据)

1.34---- 能够群发----sendOther();  先判断发送的信息有没有包含特殊的字符如@ying: xxxx这样的私聊标识符,如果没有,则群发

群发的实现是---for(MyChannel other:all){ other.send()每个线程自己调用自己的send()方法来发送}

1.35---- 能够私发:根据@:中间的名字判断 -->遍历线程池,判断属于哪个线程的名字 然后发送。other.name.equals(name),把名字,内容也取出来

1.36---- run方法为sendOther(all,getMsgFromClient())方法

2.客户端:

2.0  客户端用户的登陆时的名字------------>控制台输入流----并作为发送线程的名字传给服务端做相应的处理

2.1  调用Socket写好目的IP,和目的端口

2.2  为了实现能够不分先后的接收数据和发送数据给服务端,要创建线程,封装-接收数据类Received 和Send类,都继承了Runnable接口

2.3  主函数为 为两个线程分别创建两个静态代理,start启动

3.GUI界面的实施:

3.1 创建一个窗口类----extends JFrame

1.达到的目的是:

1.首先窗口弹出:提示输入名字--然后点击登陆按钮--------窗口触发事件返回名字给client类用于线程名字的创建(也就是client类要能获取窗口类的成员信息---设置为内部类)

2.buttonListener监听器务必要在Send创建之后才可以初始化设置,并注册

3.所以Send类和Received类的创建必须要在init()里面,且在buttonListener监听器设置的前面,

思路:ButtonListener监听器是不是可以在名字触发之后 再设置和注册

Client类作为窗口类的内部类,让外部类能调用内部类的成员。

文本框要加滚动条   JScroll 包装 JPanel 包装 JTextArea

每个run动用了Thread.sleep()方法, 不知道为啥这样就好一点了

问题:sleep的后遗症

[JAVA小项目]GUI界面的局域网聊天室的更多相关文章

  1. java小程序---简陋版多人聊天室

    功能需求: 1 每运行一次主函数,创建一个客户端聊天界面; 2 客户端界面分三块,公屏(显示所有客户端发送的信息),私屏(用于输入个人想要发送的信息),发送按钮(点击一次,将客户端信息发送到服务端) ...

  2. Java小项目之:教你做个聊天系统!

    Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...

  3. Java小项目--坦克大战(version1.0)

    Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...

  4. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  5. Java小项目之:五子棋,你下棋下得过电脑吗?

    Java小项目之:五子棋,你下棋下得过电脑吗? Java五子棋功能要求: 1.创建窗口和设计一个棋盘界面 2.实现鼠标点击,棋子出现,黑白棋轮流下 3.能够判断五子相连输赢 4.添加重新开始,悔棋,退 ...

  6. java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  7. python实现串口通讯小程序(GUI界面)

    python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...

  8. C# 异步通信 网络聊天程序开发 局域网聊天室开发

    Prepare 本文将使用一个NuGet公开的组件技术来实现一个局域网聊天程序,利用组件提供的高性能异步网络机制实现,免去了手动编写底层的困扰,易于二次开发,扩展自己的功能. 在Visual Stud ...

  9. Python实现网络图形化界面多人聊天室 - Linux

    网络图形化界面多人聊天室 - Linux Windows版本:https://www.cnblogs.com/noonjuan/p/12078524.html 在Python实现网络多人聊天室基础上, ...

随机推荐

  1. Python——requests的安装及入门-贴吧爬虫

    一.windows平台下requests的安装 1.win+R,输入cmd,打开命令行窗口,输入命令:pip install requests ,即可自动安装库成功 2.输入命令:pip list,即 ...

  2. Jenkins持续集成企业实战系列之两种网站部署的流程-----01

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  3. 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)

    原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提 ...

  4. springMVC下载功能

    前台页面 <a href="download">下载</a> 后台代码 /** * 文件下载 * @param request * @return * @t ...

  5. liunx php 安装 redis 扩展

    切换到安装目录:  cd /usr/local/ 下载php redis扩展:wget http://pecl.php.net/get/redis-2.2.8.tgz 更改名称压缩包名称: mv re ...

  6. Luogu P2572 [SCOI2010]序列操作 线段树。。

    咕咕了...于是借鉴了小粉兔的做法ORZ... 其实就是维护最大子段和的线段树,但上面又多了一些操作....QWQ 维护8个信息:1/0的个数(sum),左/右边起1/0的最长长度(ls,rs),整段 ...

  7. P2387 [NOI2014]魔法森林

    传送门 如果一条边只要考虑 $a$ 的限制,那么显然最小生成树 但是现在有 $a,b$ 两个限制,所以考虑按 $a$ 从小到大枚举边,动态维护 $b$ 的最小生成树 考虑新加入的一条边 $x,y$ , ...

  8. BZOJ - 3757 树上莫队解决离线路径问题 & 学习心得

    题意:给你一棵树,求u,v最短路径的XXX(本题是统计权值种类) 今天课上摸鱼学了一种有意思的处理路径方式(其实是链式块状树翻车了看别的),据说实际运行跑的比XX记者还快 大概就是像序列莫队那样 首先 ...

  9. ZOJ - 2401 水DP

    最近会多做点巩固基础的题目 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  10. ACM自己之前寒假的基础总结

    1.const double pi = acos(-1.0); acos:反余弦函数,需要#include<math.h>函数库,acos(-1.0)的意思就是求π的值 2.算法竞赛中,不 ...