Java网络编程疑问:TCP连接关闭示例

原创 末蓝、 2024-09-25 04:12 162阅读 0赞

在Java中,我们使用Socket和ServerSocket类来实现TCP连接的创建、关闭等操作。以下是一个简单的TCP连接关闭示例:

  1. 客户端(主动关闭连接的一方):
  1. import java.io.*;
  2. import java.net.*;
  3. public class Client {
  4. public static void main(String[] args) {
  5. try (Socket socket = new Socket("localhost", 1234);
  6. OutputStream outputStream = socket.getOutputStream();
  7. PrintWriter writer = new PrintWriter(outputStream, true))) {
  8. // 发送请求
  9. writer.println("Hello, Server!");
  10. // 关闭连接
  11. writer.close();
  12. } catch (IOException e) {
  13. e.printStackTrace();
  14. System.out.println("Connection closed due to error.");
  15. }
  16. }
  17. }
  1. 服务器端(被动关闭连接的一方):
  1. import java.io.*;
  2. import java.net.*;
  3. public class Server {
  4. public static void main(String[] args) {
  5. try (ServerSocket serverSocket = new ServerSocket(1234);
  6. Socket socket = serverSocket.accept();
  7. InputStream inputStream = socket.getInputStream();
  8. BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)))) {
  9. String receivedMessage = reader.readLine();
  10. if (receivedMessage != null && receivedMessage.contains("Hello, Server!")) {
  11. // 在这里处理接收到的消息
  12. System.out.println("Message received: " + receivedMessage);
  13. // 被动关闭连接(发送FIN包)
  14. socket.getOutputStream().write(104); // 'A' character (Fin)
  15. // 关闭连接输入流和读者
  16. inputStream.close();
  17. reader.close();
  18. } else {
  19. System.out.println("Invalid message received.");
  20. }
  21. } catch (IOException e) {
  22. e.printStackTrace();
  23. System.out.println("Connection closed due to error.");
  24. }
  25. }
  26. }

这样,客户端主动关闭TCP连接,服务器端接收到FIN包后也关闭了连接。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,162人围观)

还没有评论,来说两句吧...

相关阅读