- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章java聊天室的实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例为大家分享了java实现聊天室的具体代码,供大家参考,具体内容如下 。
聊天室界面:
源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
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();
}
;
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
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<client> 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聊天室代码 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://blog.csdn.net/qq_24082497/article/details/51347426 。
最后此篇关于java聊天室的实现代码的文章就讲到这里了,如果你想了解更多关于java聊天室的实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有聊天应用程序,可以一对一发送消息(fromId/toId)。我想升级它的聊天室。我怎样才能做到这一点? ChatingRoom 需要什么数据库结构?我还需要做什么? 我的 User.swift 模
本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下: ?
我正在使用简单的套接字连接创建一个聊天室。我有一个服务器和客户端程序。服务器在端口 225 上运行,然后当我在端口 225 上运行客户端以便它们可以读/写套接字时,客户端立即停止并显示错误消息 jav
我可以创建一个粘液室。但是如果我将房间名称指定为数据库中现有的房间名称,服务器会拒绝它。那么是否可以在 ejabberd 服务器(MYSQl 后端)中创建两个具有相同名称的房间? 如果可能的话,后果是
我正在尝试使用 PHP 创建一个聊天室(顺便说一句,它正在工作),但只显示消息,而不显示他们的用户名。我已经为他们创建了数据库、用户名和消息。我不知道为什么他们的用户名没有显示 ".$extract[
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我想在我的应用程序中实现群聊,为此我正在使用 MUC 聊天室来实现它。 在这里,我想向房间添加一个成员列表(我有 JID)。我想在内部将它们添加到列表中的所有成员。我如何在不邀请他们的情况下添加他们。
我正在尝试在 Rails 中创建类似 Whatsapp 的消息应用程序服务器端,并进行私有(private)对话。现在,我正在尝试实现应用程序的实时部分 - 我正在使用 websocket-rails
我正在尝试为我的网站制作一个 PHP/JavaScript 聊天系统。如何在不刷新页面的情况下做到这一点? JavaScript 可以:--动态添加文本到文本框。 PHP 可以:--将聊天内容保存到聊
我已经为多个客户端完全开发了一个聊天室,其多线程服务器可以完成这项工作,但仅限于我的本地计算机。我想超越这个,让这个聊天室通过互联网工作。到目前为止,我已经在路由器上对 TCP 协议(protocol
我是 Angular 的初学者,我正在尝试构建一个聊天室应用程序,以此自学如何在该框架中进行开发。 我在后端使用 PHP 和 Yii 将 RESTful 数据发送回 Angular 应用程序。我知道我
我正在寻找好的建议来制作这个聊天室: 使用 Java Swing。我已经尝试了所有 java swing 组件 3 天,但我仍然不知道该选择什么。 容器还必须插入 JprogressBars 以进行文
嗨,我正在努力让两件事同时工作...... channels2 chat room例子可以开始,但我想添加一个功能,知道房间里有多少人。我通过更新房间模型来做到这一点。 然后我想要一个仪表板来显示当前
我正在编写一个需要持久存储对话的多聊天室应用程序(即新用户应该能够看到旧消息)。如果有帮助,我正在使用 socket.io。 目前,当用户登录到一个房间时,我的 Node 应用程序会检查是否有人去过那
我试图扩展doc中关于TCP的代码来制作一个简单的聊天室,简单地说,几个客户端连接到服务器,一个客户端发送一个字符串,服务器将字符串广播给所有客户端......我写的代码显示下面,它不起作用,有人可以
如何在 Microsoft-Teams 中自动向聊天室发布消息?这是用于单向消息传递:即发布消息,而不是阅读消息。 这里的大局是我们正在评估不同的群聊解决方案,其中一项要求是从各种服务和程序向聊天室发
我创建了一个小型的 jquery 和 php 聊天室,其中包含一些 .get 和 .post 函数以及用于将数据读写到 sql server 的 php 文档。它工作正常,但小问题是当有人发布一些东西
我想实现的是自动下载附件功能,无需进入 ChatRoom,使用 QuickBlox SDK iOS 版本 2.0.12, 为此,我想在登录后启动用户所属的所有对话框(聊天室)。 使用当前的 API,用
所以我有聊天室工作所以如果收件人是 All 或 ALL 它广播我有这个工作所以如果你的名字是'Sam'它发送它与“私有(private)消息:”文本我不知道如何检查用户名的花名册并将其私下发送给该用户
我正在尝试创建基于移动设备的聊天应用。 基本上,我希望用户使用他们的 Facebook 帐户连接到 Facebook(使用 XMPPFramework) 我想要预先存在的房间供用户加入。我注意到 XM
我是一名优秀的程序员,十分优秀!