Java实现小型局域网群聊功能(C/S模式)
简介
C/S模式是一种网络通信模式,即客户端(S)与服务端(S)之间的网络通信模式。在这种模式下,客户端发送请求,服务端响应请求,并返回响应结果给客户端。
实现步骤
- 创建服务端(Server)和客户端(Client)程序。
- 在服务端中创建ServerSocket对象,监听客户端的连接请求。
- 客户端连接到服务端。
- 服务端接收客户端请求,创建Socket对象,并且与客户端进行通信。
- 客户端与服务端建立Socket通信连接,开始通信。
- 客户端和服务端进行数据传输。
- 服务端接收客户端数据,并转发到其他客户端。
- 客户端接收服务端数据,并显示在界面上。
示例
示例1:服务端代码
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket监听端口号为6666的请求
ServerSocket serverSocket = new ServerSocket(6666);
System.out.println("等待客户端连接...");
while(true) {
// 接收客户端请求
Socket socket = serverSocket.accept();
// 处理客户端请求
ServerThread serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例2:客户端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,连接服务端
Socket socket = new Socket("localhost", 6666);
System.out.println("连接服务端成功...");
// 读取服务端数据,发送数据
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while(true) {
// 读取服务端数据
String msg = in.readLine();
// 显示服务端数据
System.out.println("[收到消息]:" + msg);
// 发送消息给服务端
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
out.println(input);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例中,服务端代码创建一个ServerSocket对象,监听端口号为6666的请求,然后在无限循环中等待客户端的连接。一旦有客户端连接,就创建一个Socket对象,并且交给一个ServerThread线程进行处理。
客户端代码创建一个Socket对象,连接到服务端的6666端口,并且读取服务端的数据。在无限循环中,可以输入数据并发送给服务端,同时也读取服务端的数据并显示在控制台上。
注意:这是一个简单的示例,实际应用中需要考虑更多的异常情况和安全性问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现小型局域网群聊功能(C/S模式) - Python技术站