java 实现内网聊天室,java实现局域网聊天:代码示例

qianduancss

温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!

java 实现内网聊天室,java实现局域网聊天:代码示例

Java实现内网聊天室的基本思路是通过Socket编程实现客户端和服务器之间的通信。需要创建一个服务器端程序来监听客户端的连接请求,并实现消息的转发功能。需要创建一个客户端程序来与服务器建立连接,并实现消息的发送和接收功能。

以下是一个简单的示例代码,演示了如何使用Java实现内网聊天室:

1. 服务器端代码:

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

public class Server {

private static final int PORT = 8888;

private static List<Socket> clients = new ArrayList<>();

public static void main(String[] args) {

try {

ServerSocket serverSocket = new ServerSocket(PORT);

System.out.println("服务器已启动,等待客户端连接...");

while (true) {

Socket clientSocket = serverSocket.accept();

clients.add(clientSocket);

System.out.println("客户端连接成功:" + clientSocket.getInetAddress().getHostAddress());

new Thread(() -> {

try {

InputStream inputStream = clientSocket.getInputStream();

byte[] buffer = new byte[1024];

int length;

while ((length = inputStream.read(buffer)) != -1) {

String message = new String(buffer, 0, length);

System.out.println("收到消息:" + message);

broadcastMessage(message);

}

} catch (IOException e) {

e.printStackTrace();

}

}).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

private static void broadcastMessage(String message) {

for (Socket client : clients) {

try {

OutputStream outputStream = client.getOutputStream();

outputStream.write(message.getBytes());

outputStream.flush();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

2. 客户端代码:

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.util.Scanner;

public class Client {

private static final String SERVER_IP = "127.0.0.1";

private static final int SERVER_PORT = 8888;

public static void main(String[] args) {

try {

Socket socket = new Socket(SERVER_IP, SERVER_PORT);

System.out.println("已连接到服务器:" + socket.getInetAddress().getHostAddress());

new Thread(() -> {

try {

InputStream inputStream = socket.getInputStream();

byte[] buffer = new byte[1024];

int length;

while ((length = inputStream.read(buffer)) != -1) {

String message = new String(buffer, 0, length);

System.out.println("收到消息:" + message);

}

} catch (IOException e) {

e.printStackTrace();

}

}).start();

Scanner scanner = new Scanner(System.in);

while (true) {

String message = scanner.nextLine();

OutputStream outputStream = socket.getOutputStream();

outputStream.write(message.getBytes());

outputStream.flush();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

以上代码实现了一个简单的内网聊天室。服务器端通过ServerSocket监听指定端口,接受客户端的连接请求,并将客户端的Socket对象保存在一个列表中。每当有新的消息到达时,服务器端会遍历所有客户端的Socket对象,将消息发送给每个客户端。

客户端通过Socket连接到服务器,启动一个新的线程用于接收服务器发送的消息。客户端还可以从控制台输入消息,并通过Socket发送给服务器。

请注意,以上示例代码仅为演示用途,没有处理异常情况和多线程同步问题。在实际应用中,需要根据具体需求进行适当的优化和改进。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码