java编写qq聊天
时间: 2024-01-14 12:06:10 浏览: 27
编写QQ聊天需要使用 Socket 编程,具体步骤如下:
1. 创建客户端和服务端的 Socket 对象;
2. 在服务端使用 ServerSocket 对象监听客户端的连接请求;
3. 客户端调用 Socket 对象的 connect() 方法连接服务端;
4. 服务端接收到客户端的连接请求后,使用 accept() 方法获取客户端的 Socket 对象;
5. 客户端和服务端通过输入输出流进行通信。
下面是一个简单的示例代码:
服务端:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
System.out.println("服务端已启动,等待客户端连接...");
// 等待客户端连接
Socket client = server.accept();
System.out.println("客户端已连接,IP地址为:" + client.getInetAddress().getHostAddress());
// 获取输入输出流
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
String msg = new String(buffer, 0, len);
System.out.println("客户端说:" + msg);
// 回复客户端
String reply = "你好,我是服务端!";
out.write(reply.getBytes());
out.flush();
}
in.close();
out.close();
client.close();
server.close();
}
}
```
客户端:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 8888);
System.out.println("连接服务端成功!");
// 获取输入输出流
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// 发送消息
String msg = "你好,我是客户端!";
out.write(msg.getBytes());
out.flush();
// 接收回复
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
String reply = new String(buffer, 0, len);
System.out.println("服务端说:" + reply);
}
in.close();
out.close();
socket.close();
}
}
```
以上示例代码只是最基本的通信实现,还需要根据实际需求进行扩展和优化。