Java Socket编程:连接断开问题实例

原创 你的名字 2024-10-06 14:33 160阅读 0赞

在Java Socket编程中,连接和断开是非常基本且常见的操作。下面我们将通过一个实例来详细探讨这些问题。

假设我们有一个服务器端程序,如下所示(使用TCP协议):

  1. import java.io.*;
  2. import java.net.*;
  3. public class Server {
  4. public static void main(String[] args) throws IOException {
  5. ServerSocket serverSocket = new ServerSocket(1234); // 设置监听的端口
  6. System.out.println("Server is listening on port 1234...");
  7. Socket clientSocket = serverSocket.accept(); // 等待客户端连接
  8. System.out.println("Received connection from client: " + clientSocket.getRemoteSocketAddress());
  9. try (OutputStream outToClient = clientSocket.getOutputStream();
  10. InputStream inFromClient = clientSocket.getInputStream()) {
  11. // 与客户端进行数据交互,例如发送消息
  12. String message = "Hello, Client!"; // 构造要发送的消息
  13. outToClient.write(message.getBytes()); // 将消息发送到客户端
  14. } catch (IOException e) {
  15. System.err.println("Error occurred while communicating with client: " + e.getMessage());
  16. e.printStackTrace();
  17. } finally {
  18. if (clientSocket != null) { // 如果客户端连接未关闭
  19. clientSocket.close(); // 关闭客户端连接
  20. }
  21. }
  22. serverSocket.close(); // 关闭服务器端的Socket监听
  23. }
  24. }

这个程序中,服务器会一直在1234端口等待客户端的连接。当一个客户端连接到服务器时,服务器将打印出相关信息,并与客户端进行数据交互。

如果在客户端关闭连接后,服务器仍然尝试去读写已关闭的流(例如clientSocket.getInputStream()),将会抛出IOException。这就需要我们在处理客户端断开连接的情况时,要确保相关的资源(如输入流)已经被正确关闭。

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

发表评论

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

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

相关阅读