本文实例为大家分享了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聊天室的实现代码相关推荐

  1. java结束全部操作代码_Java创建与结束线程代码示例

    这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...

  2. java创建线程代码_Java创建与结束线程代码示例

    本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程同步.调度.线程池等内容将会在后续章节中逐步深入. 创建线程 创建普通线程有两种方式,继承Thread类 ...

  3. java 组织机构代码_JAVA实现社会统一信用代码校验的方法|chu

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  4. java 组织机构代码_JAVA实现社会统一信用代码较验

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 代码实现 package ...

  5. java 组织机构代码_JAVA实现社会统一信用代码校验的方法

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  6. java聊天室代码_java聊天室的实现代码

    本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下 聊天室界面: 源码: public class ClientFrame extends Frame { private Te ...

  7. java多客户端聊天程序,java – 多客户端聊天程序,向所有客户端广播聊天?

    我正在尝试制作一个可以容纳多个客户端的非常简单的聊天程序.我有一个多线程服务器,可以连接多个客户端,但服务器只与单个客户端通信(因为它应该,每个客户端都在自己的线程上)我需要帮助让服务器发送来自所有连 ...

  8. java主窗体设计代码_java窗体设计+GUI经典代码全放送

    [实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...

  9. java wed登录面 代码_Java Web用户登录实例代码

    实现功能: 1.用户登陆.注销 2.利用session记录用户登陆信息 3.在JSP中展示已登陆用户信息 实现原理: 登陆后通过判断用户名和密码是否和存储的一致,如果一致,就把用户信息放到sessio ...

  10. java图像增强_java图片对比度调整示例代码

    前言 本文主要给大家介绍了关于java图片对比度调整的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 测试代码 public static void main(Stri ...

最新文章

  1. Docker安装Apache与运行简单的web服务——httpd helloworld
  2. SmartNIC/DPU — 技术方向
  3. fpga初始化错误_一种SRAM型FPGA单粒子效应加固平台设计
  4. 修改 oracle dbid,更改数据库DBID
  5. C语言程序设计 函数递归调用示例
  6. Almost Regular Bracket Sequence
  7. 中国剩余定理证明过程
  8. Eclipse运行tomcat失败
  9. 用Apache James搭建本地邮件服务器
  10. 常用简单的sql语句
  11. Bailian3751 地质考察队【最值】
  12. MATLAB模糊控制算法,驾驶员制动意图识别,Fuzzy模糊控制算法
  13. python 代码格式_python代码格式
  14. Android Studio开发手机APP(二)-利用MQTT通信开发物联网程序
  15. Windows7 Ghost 旗舰装机版
  16. 2638: 黑白染色
  17. Android 使用FTP实现上传、下载等功能
  18. Spring Boot - 让人抓狂的ClassNotFoundException
  19. 【视频笔记】微信小程序
  20. 电话卡插到终端服务器通话时长,如何降低呼叫中心通话时长而不影响服务质量...

热门文章

  1. 攻防世界——MISC——pdf
  2. 二进制数的算术运算和逻辑运算
  3. UML(统一建模语言)
  4. 2020.11.16-使用Arduino测速
  5. 串口通信工具android,串口调试工具手机版
  6. html中响应ocx事件,JS实现OCX控件的事件响应示例
  7. SSM框架原理以及流程
  8. 关于8266WiFi模块(AT)问题分析与解答(单片机和wifi模块连接)
  9. android连接打印机打印pdf文件,如何在Android设备上打印PDF文件
  10. Android聊天软件开发(基于网易云IM即时通讯)——发送图片消息(五)