基于TCP的套接字编程:编写服务器端类ServerDemo,在ServerDemo类中创建服务器端ServerSocket对象,并依次编写监听连接、获取输入流,打印读取数据,释放资源等操作。编写客户端类ClientDemo,在ClientDemo类中创建客户端Socket对象,并分别编写建立连接、获取输出流,释放资源等步骤。依次执行ServerDemo和ClientDemo类,观察命令行输出变化。
时间: 2024-02-19 08:58:41 浏览: 81
以下是服务器端类ServerDemo的示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888); // 创建服务器端ServerSocket对象,指定端口号为8888
System.out.println("服务器已启动,等待客户端连接...");
Socket socket = serverSocket.accept(); // 监听连接,获取客户端Socket对象
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 获取输入流
String line = null;
while ((line = reader.readLine()) != null) { // 读取数据
System.out.println("客户端发来消息:" + line);
}
reader.close(); // 释放资源
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以下是客户端类ClientDemo的示例代码:
```java
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888); // 创建客户端Socket对象,指定服务器端ip和端口号
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); // 获取输出流
writer.println("Hello, Server!"); // 发送数据
writer.flush(); // 刷新缓存区
writer.close(); // 释放资源
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在命令行中先运行ServerDemo类,然后再运行ClientDemo类,可以看到命令行输出如下:
```
服务器已启动,等待客户端连接...
客户端发来消息:Hello, Server!
```
说明客户端成功向服务器端发送了一条消息。
阅读全文