编写简单的TCP网络程序,掌握ServerSocket、Socket类的具体用法:编写服务器端类ServerDemo,在ServerDemo类中创建服务器端ServerSocket对象,并依次编写监听连接、获取输入流,打印读取数据,释放资源等操作。编写客户端类ClientDemo,在ClientDemo类中创建客户端Socket对象,并分别编写建立连接、获取输出流,释放资源等步骤。依次执行ServerDemo和ClientDemo类,观察命令行输出变化。
时间: 2023-12-10 19:38:13 浏览: 31
以下是一个简单的TCP网络程序示例:
ServerDemo.java
```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) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started.");
while (true) {
Socket socket = serverSocket.accept(); // 监听连接
System.out.println("Client connected: " + socket.getInetAddress().getHostAddress());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String data = reader.readLine(); // 获取输入流
System.out.println("Received data: " + data);
reader.close();
socket.close(); // 释放资源
}
}
}
```
ClientDemo.java
```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) throws IOException {
Socket socket = new Socket("localhost", 8888); // 建立连接
System.out.println("Connected to server.");
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.println("Hello server!"); // 获取输出流
writer.flush();
writer.close();
socket.close(); // 释放资源
}
}
```
在命令行中依次执行ServerDemo和ClientDemo,可以看到如下输出:
```
Server started.
Client connected: 127.0.0.1
Received data: Hello server!
Connected to server.
```
这表明客户端成功与服务器建立连接,并向服务器发送了一条消息。服务器成功监听到连接并读取了客户端发送的消息。