java socket 聊天【java socket发送消息:代码示例】

qianduancss

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

java socket 聊天【java socket发送消息:代码示例】

Java Socket是一种用于在网络上进行通信的技术。使用Java Socket可以实现客户端和服务器之间的双向通信。在聊天应用中,可以使用Java Socket来实现消息的发送和接收。

我们需要创建一个服务器端和一个客户端。服务器端负责接收客户端发送的消息,并将其转发给其他客户端。客户端负责发送消息给服务器端,并接收服务器端转发的消息。

下面是一个简单的示例代码,演示了如何使用Java Socket发送消息:

服务器端代码示例:

import java.io.IOException;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Server {

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

public static void main(String[] args) {

try {

ServerSocket serverSocket = new ServerSocket(12345);

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

while (true) {

Socket clientSocket = serverSocket.accept();

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

PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);

clients.add(writer);

Thread thread = new Thread(new ClientHandler(clientSocket, writer));

thread.start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

private static class ClientHandler implements Runnable {

private Socket clientSocket;

private PrintWriter writer;

public ClientHandler(Socket clientSocket, PrintWriter writer) {

this.clientSocket = clientSocket;

this.writer = writer;

}

@Override

public void run() {

try {

Scanner scanner = new Scanner(clientSocket.getInputStream());

while (scanner.hasNextLine()) {

String message = scanner.nextLine();

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

for (PrintWriter client : clients) {

client.println(message);

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

客户端代码示例:

import java.io.IOException;

import java.io.PrintWriter;

import java.net.Socket;

import java.util.Scanner;

public class Client {

public static void main(String[] args) {

try {

Socket socket = new Socket("localhost", 12345);

System.out.println("连接服务器成功:" + socket);

PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

Thread thread = new Thread(new ServerHandler(socket));

thread.start();

Scanner scanner = new Scanner(System.in);

while (true) {

String message = scanner.nextLine();

writer.println(message);

}

} catch (IOException e) {

e.printStackTrace();

}

}

private static class ServerHandler implements Runnable {

private Socket socket;

public ServerHandler(Socket socket) {

this.socket = socket;

}

@Override

public void run() {

try {

Scanner scanner = new Scanner(socket.getInputStream());

while (scanner.hasNextLine()) {

String message = scanner.nextLine();

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

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

以上代码演示了一个简单的聊天应用,服务器端通过监听指定的端口接收客户端的连接,并将客户端发送的消息转发给其他客户端。客户端通过指定服务器的地址和端口连接到服务器,并发送消息给服务器。

运行以上代码,可以在控制台上输入消息并发送给其他客户端,同时也可以接收其他客户端发送的消息。这样就实现了简单的Java Socket聊天功能。

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

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