java socket实现简单即时通讯
Posted PacosonSWJTU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java socket实现简单即时通讯相关的知识,希望对你有一定的参考价值。
【1】socket服务器
/**
* @Description 即时消息服务器
* @author xiao tang
* @version 1.0.0
* @createTime 2022年01月23日
*/
public class IMSocketServer
private static int PORT = 13;
public static void main(String[] args)
ServerSocket server = null;
try
// 开启端口
server = new ServerSocket(PORT);
System.out.println("服务器已启动");
// 与客户端建立socket连接
Socket socket = server.accept();
System.out.println("客户端请求,创建连接成功");
// 写出器
PrintWriter writer2Client = new PrintWriter(socket.getOutputStream());
writer2Client.write("连接创建成功\\r\\n");
writer2Client.flush();
// 客户端读入器
Scanner scanner4Client = new Scanner(socket.getInputStream());
// 控制台读入器
Scanner scanner4Console = new Scanner(System.in);
// 等待客户端输入
while(true)
// 读取客户端消息并打印
String msg4Client = scanner4Client.nextLine();
System.out.println("客户端:" + msg4Client);
System.out.print("服务端:");
// 获取控制台输入数据并发送到客户端
String msg4Console = scanner4Console.nextLine();
writer2Client.write(msg4Console + "\\r\\n");
writer2Client.flush();
catch (IOException e)
throw new MyRunTimeException("打开端口socket失败,端口=" + PORT + ", 异常信息=" + e.getMessage());
finally
try
if (server != null)
server.close();
catch (Exception e)
【2】socket客户端
/**
* @Description 即时消息客户端
* @author xiao tang
* @version 1.0.0
* @createTime 2022年01月23日
*/
public class IMSocketClient
private static int PORT = 13;
public static void main(String[] args)
try (Socket socket = new Socket())
// 与服务器端建立socket连接
socket.connect(new InetSocketAddress("localhost", PORT), 3000);
// 新建读取器,写出器
Scanner scanner4Server = new Scanner(socket.getInputStream());
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
// 控制台读入器
Scanner scanner4Console = new Scanner(System.in);
System.out.println("连接成功,等待服务器响应");
// 等待服务器控制台输入
while(true)
// 读取服务器响应并打印
String msg4Server = scanner4Server.next();
System.out.println("服务器:" + msg4Server);
System.out.printf("\\n客户端:");
// 客户端读取控制台输入,并发送到服务器
String msg4Console = scanner4Console.nextLine();
printWriter.write(msg4Console + "\\r\\n");
printWriter.flush();
catch (Exception e)
throw new MyRunTimeException("客户端通讯失败, 异常信息=" + e.getMessage());
【3】通讯效果
【4】注意事项
1.发送消息的时候,一定要加上回车和换行符(\\r\\n),不然 scanner.nextLine() 无法识别到一行的结束,就会一直阻塞;
以上是关于java socket实现简单即时通讯的主要内容,如果未能解决你的问题,请参考以下文章
Python3 socket 实现即时通讯脚本,threading 多线程
Python3 socket 实现即时通讯脚本,threading 多线程