Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - Socket close() 方法



描述

Java Socket close() 方法關閉此套接字。任何當前在此套接字上阻塞的 I/O 操作的執行緒都將丟擲 SocketException。套接字關閉後,將無法用於進一步的網路使用(即無法重新連線或重新繫結)。需要建立一個新的套接字。關閉此套接字也將關閉套接字的 InputStream 和 OutputStream。如果此套接字具有關聯的通道,則該通道也將關閉。

宣告

以下是 java.net.Socket.close() 方法的宣告。

public void close() throws IOException

引數

返回值

異常

IOException − 如果在關閉此套接字時發生 I/O 錯誤。

示例 1

以下示例演示了 Java Socket close() 方法的使用,用於在繫結到本地主機埠 6066 後關閉套接字。第一步,我們使用無引數建構函式建立了一個 Socket 例項。然後為了建立一個 SocketAddress 物件,我們初始化了一個 localhost 地址的 InetAddress 例項。使用 InetSocketAddress 物件,我們建立了一個 SocketAddress 物件,然後使用 bind() 方法將地址繫結到套接字。完成後,我們列印本地埠和 inet 地址,如所示。最後,我們使用 close() 方法關閉了套接字。

package com.tutorialspoint;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

public class SocketDemo {
   public static void main(String[] args) throws IOException {
      Socket socket = new Socket();  
      InetAddress inetAddress=InetAddress.getByName("localhost");  
      SocketAddress socketAddress=new InetSocketAddress(inetAddress, 6066);  
      socket.bind(socketAddress); 

      System.out.println("Port number: "+socket.getLocalPort()); 
      System.out.println("Inet Address: "+socket.getInetAddress()); 
      socket.close();
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Port number: 6066
Inet Address: null

示例 2

以下示例演示了 Java Socket close() 方法的使用,用於在繫結到本地主機埠 6066 後關閉套接字。第一步,我們使用無引數建構函式建立了一個 Socket 例項。現在使用 bind() 方法,我們將空地址繫結到套接字。完成後,我們列印分配給套接字的預設本地埠和 inet 地址,如所示。最後,我們使用 close() 方法關閉了套接字。

package com.tutorialspoint;

import java.io.IOException;
import java.net.Socket;

public class SocketDemo {
   public static void main(String[] args) throws IOException {
      Socket socket = new Socket();  
      socket.bind(null); 

      System.out.println("Port number: "+socket.getLocalPort()); 
      System.out.println("Inet Address: "+socket.getInetAddress()); 
      socket.close();
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Port number: 54383
Inet Address: null

示例 3

以下示例演示了 Java Socket bind() 方法的使用,用於在 bind() 操作到本地主機埠 6066 之前關閉套接字,以檢查關閉操作的影響。第一步,我們使用無引數建構函式建立了一個 Socket 例項。然後為了建立一個 SocketAddress 物件,我們初始化了一個 localhost 地址的 InetAddress 例項。使用 InetSocketAddress 物件,我們建立了一個 SocketAddress 物件。使用 socket.close(),我們關閉套接字,然後使用 bind() 方法嘗試將地址繫結到套接字。它將丟擲如下所示的異常:

package com.tutorialspoint;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

public class SocketDemo {
   public static void main(String[] args) throws IOException {
      Socket socket = new Socket();  
      InetAddress inetAddress=InetAddress.getByName("localhost");  
      SocketAddress socketAddress=new InetSocketAddress(inetAddress, 6066);
      socket.close();	  
      socket.bind(socketAddress); 

      System.out.println("Port number: "+socket.getLocalPort()); 
      System.out.println("Inet Address: "+socket.getInetAddress()); 
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Exception in thread "main" java.net.SocketException: Socket is closed
	at java.base/java.net.Socket.bind(Socket.java:644)
	at com.tutorialspoint.SocketDemo.main(SocketDemo.java:15)
java-socket.htm
廣告