java实现多人聊天对话室

网友投稿 264 2022-12-31

java实现多人聊天对话室

使用ServerSocket和Socket实现服务器端和客户端的Socket通信。

了解完socket通信步骤后可以发现本实验需要写两个类:Server和Client,并且要先运行Server再运行Client。

先构造服务器端

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();

nzMpBfIxph }

}

});

}

}

}

再构建客户端

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")));

http:// int lrn = in.read(buf);

System.out.println("服务端回复:"+new String(buf,0,lrn,("utf-8")));

}

}

}

服务器端构建在一个主机上,然后在多台电脑创建客户端,并访问服务器端所在的主机就可以构成聊天室的效果,当然前提是在同一个局域网下。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:樟树京东快递物流查询单号(樟树市顺丰快递网点)
下一篇:网站api接口设计(后端api接口设计)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~