聊天室 java代码_java聊天室的实现代码
本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下
聊天室界面:
源码:
public class clientframe extends frame {
private textfield textfieldcontent = new textfield();
private textarea textareacontent = new textarea();
private socket socket = null;
private outputstream out = null;
private dataoutputstream dos = null;
private inputstream in = null;
private datainputstream dis = null;
private boolean flag = false;
/**
* 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午9:19:51 功能:启动客户端程序
*
* @param args
*/
public static void main(string[] args) {
new clientframe().init();
}
/**
* 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午9:20:43 功能:对窗口进行初始化
*/
private void init() {
this.setsize(300, 300);
setlocation(250, 150);
setvisible(true);
settitle("wechatroom");
// 添加控件
this.add(textareacontent);
this.add(textfieldcontent, borderlayout.south);
textareacontent.setfocusable(false);
pack();
// 关闭事件
addwindowlistener(new windowadapter() {
public void windowclosing(windowevent e) {
system.out.println("用户试图关闭窗口");
disconnect();
system.exit(0);
}
});
// textfieldcontent添加回车事件
textfieldcontent.addactionlistener(new actionlistener() {
public void actionperformed(actionevent e) {
onclickenter();
}
});
// 建立连接
connect();
new thread(new recivemessage()).start();
}
private class recivemessage implements runnable {
@override
public void run() {
flag = true;
try {
while (flag) {
string message = dis.readutf();
textareacontent.append(message + "\n");
}
} catch (eofexception e) {
flag = false;
system.out.println("客户端已关闭");
// e.printstacktrace();
} catch (socketexception e) {
flag = false;
system.out.println("客户端已关闭");
// e.printstacktrace();
} catch (ioexception e) {
flag = false;
system.out.println("接受消息失败");
e.printstacktrace();
}
}
}
/**
* 功能:当点击回车时出发的事件 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午9:49:30
*/
private void onclickenter() {
string message = textfieldcontent.gettext().trim();
if (message != null && !message.equals("")) {
string time = new simpledateformat("h:m:s").format(new date());
textareacontent.append(time + "\n" + message + "\n");
textfieldcontent.settext("");
sendmessagetoserver(message);
}
}
/**
* 功能:给服务器发送消息 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午10:13:48
*
* @param message
*/
private void sendmessagetoserver(string message) {
try {
dos.writeutf(message);
dos.flush();
} catch (ioexception e) {
system.out.println("发送消息失败");
e.printstacktrace();
}
}
/**
* 功能:申请socket链接 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午10:00:38
*/
private void connect() {
try {
socket = new socket("localhost", 8888);
out = socket.getoutputstream();
dos = new dataoutputstream(out);
in = socket.getinputstream();
dis = new datainputstream(in);
} catch (unknownhostexception e) {
system.out.println("申请链接失败");
e.printstacktrace();
} catch (ioexception e) {
system.out.println("申请链接失败");
e.printstacktrace();
}
}
/**
* 功能:关闭流和链接 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午10:01:32
*/
private void disconnect() {
flag = false;
if (dos != null) {
try {
dos.close();
} catch (ioexception e) {
system.out.println("dos关闭失败");
e.printstacktrace();
}
}
if (out != null) {
try {
out.close();
} catch (ioexception e) {
system.out.println("dos关闭失败");
e.printstacktrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (ioexception e) {
system.out.println("socket关闭失败");
e.printstacktrace();
}
;
}
}
}
package com.chat;
import java.io.datainputstream;
import java.io.dataoutputstream;
import java.io.eofexception;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import java.net.bindexception;
import java.net.serversocket;
import java.net.socket;
import java.net.socketexception;
import java.util.arraylist;
import java.util.list;
public class chatserver {
private list clients = new arraylist<>();
/**
* 功能:启动chatsever 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午10:26:41
*
* @param args
*/
public static void main(string[] args) {
new chatserver().init();
}
/**
* 功能:对chatserver初始化 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午10:27:09
*/
private void init() {
system.out.println("服务器已开启");
// bindexception
serversocket ss = null;
socket socket = null;
try {
ss = new serversocket(8888);
} catch (bindexception e) {
system.out.println("端口已被占用");
e.printstacktrace();
} catch (ioexception e1) {
e1.printstacktrace();
}
try {
client client = null;
while (true) {
socket = ss.accept();
system.out.println("客户驾到");
client = new client(socket);
clients.add(client);
new thread(client).start();
}
} catch (ioexception e) {
e.printstacktrace();
}
}
private class client implements runnable {
private socket socket = null;
inputstream in = null;
datainputstream din = null;
outputstream out = null;
dataoutputstream dos = null;
boolean flag = true;
public client(socket socket) {
this.socket = socket;
try {
in = socket.getinputstream();
din = new datainputstream(in);
} catch (ioexception e) {
system.out.println("接受消息失败");
e.printstacktrace();
}
}
public void run() {
string message;
try {
while (flag) {
message = din.readutf();
// system.out.println("客户说:" + message);
forwordtoallclients(message);
}
} catch (socketexception e) {
flag = false;
system.out.println("客户下线");
clients.remove(this);
// e.printstacktrace();
} catch (eofexception e) {
flag = false;
system.out.println("客户下线");
clients.remove(this);
// e.printstacktrace();
} catch (ioexception e) {
flag = false;
system.out.println("接受消息失败");
clients.remove(this);
e.printstacktrace();
}
if (din != null) {
try {
din.close();
} catch (ioexception e) {
system.out.println("din关闭失败");
e.printstacktrace();
}
}
if (in != null) {
try {
in.close();
} catch (ioexception e) {
system.out.println("din关闭失败");
e.printstacktrace();
}
}
if (socket != null) {
try {
socket.close();
} catch (ioexception e) {
system.out.println("din关闭失败");
e.printstacktrace();
}
}
}
/**
* 功能:转发给所有客户端 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午11:11:59
*
* @param message
* @throws ioexception
*/
private void forwordtoallclients(string message) throws ioexception {
for (client c : clients) {
if (c != this) {
out = c.socket.getoutputstream();
dos = new dataoutputstream(out);
forwordtoclient(message);
}
}
}
/**
* 功能:发送给一个客户端 学校:山东师范大学 程序员:外力_victor 日期:2016年5月8日 上午11:16:12
*
* @throws ioexception
*/
private void forwordtoclient(string message) throws ioexception {
dos.writeutf(message);
dos.flush();
system.out.println("转发成功!");
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
聊天室 java代码_java聊天室的实现代码相关推荐
- java结束全部操作代码_Java创建与结束线程代码示例
这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...
- java创建线程代码_Java创建与结束线程代码示例
本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程同步.调度.线程池等内容将会在后续章节中逐步深入. 创建线程 创建普通线程有两种方式,继承Thread类 ...
- java 组织机构代码_JAVA实现社会统一信用代码校验的方法|chu
网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...
- java 组织机构代码_JAVA实现社会统一信用代码较验
网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 代码实现 package ...
- java 组织机构代码_JAVA实现社会统一信用代码校验的方法
网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...
- java聊天室代码_java聊天室的实现代码
本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下 聊天室界面: 源码: public class ClientFrame extends Frame { private Te ...
- java多客户端聊天程序,java – 多客户端聊天程序,向所有客户端广播聊天?
我正在尝试制作一个可以容纳多个客户端的非常简单的聊天程序.我有一个多线程服务器,可以连接多个客户端,但服务器只与单个客户端通信(因为它应该,每个客户端都在自己的线程上)我需要帮助让服务器发送来自所有连 ...
- java主窗体设计代码_java窗体设计+GUI经典代码全放送
[实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...
- java wed登录面 代码_Java Web用户登录实例代码
实现功能: 1.用户登陆.注销 2.利用session记录用户登陆信息 3.在JSP中展示已登陆用户信息 实现原理: 登陆后通过判断用户名和密码是否和存储的一致,如果一致,就把用户信息放到sessio ...
- java图像增强_java图片对比度调整示例代码
前言 本文主要给大家介绍了关于java图片对比度调整的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 测试代码 public static void main(Stri ...
最新文章
- Docker安装Apache与运行简单的web服务——httpd helloworld
- SmartNIC/DPU — 技术方向
- fpga初始化错误_一种SRAM型FPGA单粒子效应加固平台设计
- 修改 oracle dbid,更改数据库DBID
- C语言程序设计 函数递归调用示例
- Almost Regular Bracket Sequence
- 中国剩余定理证明过程
- Eclipse运行tomcat失败
- 用Apache James搭建本地邮件服务器
- 常用简单的sql语句
- Bailian3751 地质考察队【最值】
- MATLAB模糊控制算法,驾驶员制动意图识别,Fuzzy模糊控制算法
- python 代码格式_python代码格式
- Android Studio开发手机APP(二)-利用MQTT通信开发物联网程序
- Windows7 Ghost 旗舰装机版
- 2638: 黑白染色
- Android 使用FTP实现上传、下载等功能
- Spring Boot - 让人抓狂的ClassNotFoundException
- 【视频笔记】微信小程序
- 电话卡插到终端服务器通话时长,如何降低呼叫中心通话时长而不影响服务质量...