Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類引用

Java 有用資源

Java - Socket connect() 方法



描述

Java Socket connect() 方法將此套接字連線到伺服器。

宣告

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

public void connect(SocketAddress endpoint) throws IOException

引數

endpoint − SocketAddress

返回值

異常

IOException − 如果連線過程中發生錯誤。

IllegalBlockingModeException − 如果此套接字具有關聯的通道,並且該通道處於非阻塞模式。

IllegalArgumentException − 如果 endpoint 為 null 或是不受此套接字支援的 SocketAddress 子類。

示例 1

以下示例演示了 Java Socket connect() 方法的使用,該方法將套接字連線到埠 6066 上的 localhost。第一步,我們使用無引數建構函式建立了一個 Socket 例項。然後,為了建立一個 SocketAddress 物件,我們初始化了一個 localhost 地址的 InetAddress 例項。使用 InetSocketAddress 物件,我們建立了一個 SocketAddress 物件,然後使用 connect() 方法,我們將地址連線到套接字。完成後,我們列印本地埠和 InetAddress,如下所示。最後,我們使用 close() 方法關閉了套接字。由於 localhost 伺服器未啟動,因此會丟擲錯誤。

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.connect(socketAddress); 

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

輸出

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

Exception in thread "main" java.net.ConnectException: Connection refused: connect
	at java.base/java.net.PlainSocketImpl.connect0(Native Method)
	at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:101)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.base/java.net.Socket.connect(Socket.java:608)
	at java.base/java.net.Socket.connect(Socket.java:557)
	at com.tutorialspoint.SocketDemo.main(SocketDemo.java:14)

示例 2

以下示例演示了 Java Socket connect() 方法的使用,該方法將套接字繫結到埠 6066 上的 localhost。第一步,我們使用無引數建構函式建立了一個 Socket 例項。現在使用 connect() 方法,我們嘗試將 null 地址連線到套接字。完成後,我們列印分配給套接字的預設本地埠和 InetAddress,如下所示。最後,我們使用 close() 方法關閉了套接字。由於地址為 null,connect 方法會丟擲錯誤。

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.connect(null); 

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

輸出

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

Exception in thread "main" java.lang.IllegalArgumentException: connect: The address can't be null
	at java.base/java.net.Socket.connect(Socket.java:579)
	at java.base/java.net.Socket.connect(Socket.java:557)
	at com.tutorialspoint.SocketDemo.main(SocketDemo.java:9)

示例 3

以下示例演示瞭如果套接字已關閉,則使用 Java Socket connect() 方法將套接字繫結到埠 6066 上的 localhost。第一步,我們使用無引數建構函式建立了一個 Socket 例項。然後,為了建立一個 SocketAddress 物件,我們初始化了一個 localhost 地址的 InetAddress 例項。使用 InetSocketAddress 物件,我們建立了一個 SocketAddress 物件。使用 socket.close(),我們關閉套接字,然後使用 connect() 方法,我們將地址連線到套接字,如下所示:

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.connect(socketAddress); 

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

輸出

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

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