- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章java实现多人聊天对话室由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
使用ServerSocket和Socket实现服务器端和客户端的Socket通信.
了解完socket通信步骤后可以发现本实验需要写两个类:Server和Client,并且要先运行Server再运行Client.
先构造服务器端 。
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
|
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.OutputStream;
import
java.net.ServerSocket;
import
java.net.Socket;
import
java.util.concurrent.ExecutorService;
import
java.util.concurrent.ScheduledThreadPoolExecutor;
/**
* @author: Ren
* @date: 2020-08-03 15:23
* @description:
*/
public
class
TcpserverC2 {
public
static
void
main(String[] args)
throws
IOException {
// 定义多线程,让多个用户都可以参与到聊天室
ExecutorService pool =
new
ScheduledThreadPoolExecutor(
10
);
// 绑定端口
ServerSocket serverSocket =
new
ServerSocket(
8888
);
// 利用循环一直来读取新的socket
while
(
true
) {
// 开始serversocket侦听请求,这方法会阻塞等待tcp请求的到来,一旦到来,就返回
Socket accept = serverSocket.accept();
pool.execute(
new
Runnable() {
Socket socket = accept;
// 定义字节数组来读取输入流
byte
[] buf =
new
byte
[
1024
];
@Override
public
void
run() {
// 定义输入输出流
InputStream in =
null
;
OutputStream out =
null
;
try
{
in = socket.getInputStream();
out = socket.getOutputStream();
while
(
true
) {
int
len = in.read(buf);
System.out.println(
"服务器收到:"
+
new
String(buf,
0
, len, (
"utf-8"
)));
// 聊天室服务端一般不会参与对话,所以一般不加这个功能
// String xitongshuohua = scanner.nextLine();
// out.write("谢谢".getBytes(Charset.forName("utf-8")));
out.write(
"谢谢"
.getBytes((
"utf-8"
)));
}
}
catch
(IOException e) {
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
|
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.OutputStream;
import
java.net.Socket;
import
java.util.Scanner;
/**
* @author: Ren
* @date: 2020-08-03 15:23
* @description:
*/
public
class
TcpClientC2 {
public
static
void
main(String[] args)
throws
IOException {
// 目标地址,目标端口
Socket socket =
new
Socket(
"127.0.0.1"
,
8888
);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
Scanner scanner =
new
Scanner(System.in);
byte
[] buf =
new
byte
[
1024
];
while
(
true
) {
String word = scanner.nextLine();
out.write(word.getBytes((
"utf-8"
)));
int
lrn = in.read(buf);
System.out.println(
"服务端回复:"
+
new
String(buf,
0
,lrn,(
"utf-8"
)));
}
}
}
|
服务器端构建在一个主机上,然后在多台电脑创建客户端,并访问服务器端所在的主机就可以构成聊天室的效果,当然前提是在同一个局域网下.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://blog.csdn.net/weixin_44281922/article/details/107770997 。
最后此篇关于java实现多人聊天对话室的文章就讲到这里了,如果你想了解更多关于java实现多人聊天对话室的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
joinClassWithToken({ @required final String room, //Room ID @required final String serevrUrl, //
//如何获取不同的用户/ session 室日历事件? 我们正在尝试使用图形 REST API 来获取另一个用户(共享日历给经过身份验证的用户)或 session 室(应该是 Active Direc
我正在制作一个 session 室预订系统,您可以在其中选择特定的时间段,然后您应该在那时获得可用的房间。一些表的名称是法语,因此我将在需要时提供 () 之间的含义。我的问题是,当我选择时间时,我什至
我需要帮助来创建查询以在所选时间段内已有 session 时返回。 我有表 rep_reuniao具有以下设计 ID --> int ROOM --> in
我在一个实时聊天的在线网站上工作,几天来我一直在尝试设置 socket.io 房间,但我的一个自定义事件就是没有发出。 我的网站有 2 个路径,/ 和 /play。当有人在 / 路径中填写表单时,网站
所以我得到了这些任务: 创建 session 室 获取 session 室预订和按员工过滤的可能性 创建预订(预订有标题、起止日期、 雇员) 首先我创建了一个 session 室,这是模型: clas
我正在开发 ejabberd API 来邀请用户加入 MUC 房间。我已经为 API 设置了 OAuth。 我已经使用 get_room_occupants 测试了 oauth,它工作正常。 现在,我
我正在通过 Microsoft Graph API 将我的平台与 Office 365 日历集成。 我打算导入和创建新的 session 室,但我已经检查过文档,该 API 中的所有房间都处于测试阶段
我对Office365 REST API有疑问。有没有一种方法可以获取资源列表- session 室日历。 如果我知道 session 室用户名,那么我只能在 session 室举行 session
我需要从 Microsoft Graph 返回用户列表。我是通过/v1.0/users 端点执行此操作的。 例如 https://graph.microsoft.com/v1.0/users/ 但是,
Rejecting mapping update to [db] as the final mapping would have more than 1 type: [meeting_invities
我正在尝试使用 outlook API 从列表中的帐户返回所有 session 室。这可能吗?我在文档中的任何地方都找不到它。我必须调用哪个 API? 谢谢 最佳答案 不,Outlook API 本身
我正在使用 Office 365 REST api 访问我帐户的日历。 我想访问我的帐户有权访问的所有日历,特别是出现在我的 Office 365 界面的“其他日历”部分中的 session 室日历。
我想使用 ng-socket-io 加入一个房间。我知道Socket.IO supports rooms and namespaces,所以Socket.IO绝对可以实现。 我基本上希望连接的用户加入
我希望所有 session 都在 session 室举行。我正在使用以下代码,但我想使用 Node JS。那么我可以做这个手术吗?如果是的话怎么办?我无法获得有关此问题的任何信息。所有示例和代码结构都
对于一个应用程序,我需要能够创建一个多用户聊天室并加入其中。聊天服务器是一个 openfire 服务器。 我曾经有过: MultiUserChat chat = new MultiUserChat(c
我有一个应用程序,多人可以通过输入在托管游戏的手机上生成的代码来加入游戏。我想使用此代码作为套接字 io 房间的名称,以便不同组的玩家之间可以进行多个游戏。 这是我的服务器代码: var expres
我是一名优秀的程序员,十分优秀!