上述退出客户端和服务端的完整代码
时间: 2023-09-05 21:09:01 浏览: 44
以下是一个简单的客户端和服务端的实现,包含退出功能的代码示例:
客户端代码:
```java
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Objects;
import java.util.Scanner;
public class Client {
private static Socket socket;
private static ObjectOutputStream oos;
private static ObjectInputStream ois;
public static void main(String[] args) {
try {
// 连接服务端
socket = new Socket("localhost", 8888);
// 获取输出流和输入流
oos = new ObjectOutputStream(socket.getOutputStream());
ois = new ObjectInputStream(socket.getInputStream());
// 启动读线程
new Thread(new ReadThread()).start();
// 向服务端发送消息
Scanner scanner = new Scanner(System.in);
while (true) {
String msg = scanner.nextLine();
oos.writeObject(msg);
oos.flush();
if("exit".equals(msg)) {
// 关闭网络连接和输入输出流
if(Objects.nonNull(socket)){
socket.close();
}
if(Objects.nonNull(oos)){
oos.close();
}
if(Objects.nonNull(ois)){
ois.close();
}
// 退出客户端
System.exit(0);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static class ReadThread implements Runnable {
@Override
public void run() {
try {
while (true) {
String msg = (String) ois.readObject();
System.out.println("服务端说:" + msg);
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
```
服务端代码:
```java
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Objects;
public class Server {
private static ServerSocket serverSocket;
private static Socket socket;
private static ObjectOutputStream oos;
private static ObjectInputStream ois;
public static void main(String[] args) {
try {
// 创建ServerSocket并绑定端口
serverSocket = new ServerSocket(8888);
System.out.println("服务端已启动,等待客户端连接...");
// 等待客户端连接
socket = serverSocket.accept();
System.out.println("客户端已连接,地址:" + socket.getInetAddress());
// 获取输出流和输入流
oos = new ObjectOutputStream(socket.getOutputStream());
ois = new ObjectInputStream(socket.getInputStream());
// 启动读线程
new Thread(new ReadThread()).start();
// 向客户端发送消息
while (true) {
String msg = "欢迎使用聊天室!";
oos.writeObject(msg);
oos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static class ReadThread implements Runnable {
@Override
public void run() {
try {
while (true) {
String msg = (String) ois.readObject();
System.out.println("客户端说:" + msg);
if("exit".equals(msg)) {
// 关闭网络连接和输入输出流
if(Objects.nonNull(socket)){
socket.close();
}
if(Objects.nonNull(oos)){
oos.close();
}
if(Objects.nonNull(ois)){
ois.close();
}
// 退出服务端
System.exit(0);
}
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
```
在上述代码中,客户端和服务端都可以通过发送exit消息来退出应用程序。当收到exit消息时,程序会关闭网络连接和输入输出流,并退出应用程序。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)