Java实现QQ聊天
简介
QQ聊天是一种实时通信的应用程序,可以在电脑、手机等设备上进行文字、语音和视频的交流。在本文中,我将教会你如何使用Java语言来实现一个简单的QQ聊天程序。
流程图
st=>start: 开始
op1=>operation: 创建服务器
op2=>operation: 创建客户端
op3=>operation: 服务器监听端口
op4=>operation: 客户端连接服务器
op5=>operation: 服务器接收消息
op6=>operation: 客户端发送消息
op7=>operation: 客户端接收消息
op8=>operation: 服务器发送消息
e=>end: 结束
st->op1->op2->op3->op4->op5->op6->op7->op8->e
实现步骤
步骤 | 描述 |
---|---|
1 | 创建服务器 |
2 | 创建客户端 |
3 | 服务器监听端口 |
4 | 客户端连接服务器 |
5 | 服务器接收消息 |
6 | 客户端发送消息 |
7 | 客户端接收消息 |
8 | 服务器发送消息 |
代码实现
1. 创建服务器
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888); // 创建服务器套接字,监听8888端口
System.out.println("服务器启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端连接成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 创建客户端
import java.io.IOException;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888); // 连接服务器
System.out.println("成功连接服务器!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. 服务器监听端口
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功!");
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = reader.readLine(); // 读取客户端发送的消息
System.out.println("客户端发送的消息:" + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. 客户端连接服务器
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("成功连接服务器!");
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.println("Hello Server"); // 发送消息给服务器
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
5. 服务器接收消息
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功!");
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = reader.readLine();
System.out.println("客户端发送的消息:" + message);
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
writer.println("Hello Client"); // 发送消息给客户端
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
6. 客户端发送消息
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888