Wenn bei unseren täglichen Verbindungen die Zeitüberschreitung zu lang ist, wirkt sich dies auf den Test während der Entwicklung aus. Der folgende Artikel teilt Ihnen hauptsächlich den Code zum Festlegen der Verbindungszeitüberschreitung für Socket in Java mit Schauen wir uns das unten an.
Vorwort
Jeder weiß, dass Javas Socket IO auslöst, wenn er keine Verbindung zum Host mit der angegebenen IP und dem angegebenen Port herstellen kann Ausnahme Ausnahme, und unter normalen Umständen vergeht von der Verbindung bis zum Auftreten der IOException ein unbestimmter Zeitraum, der sogenannte Timeout-Zeitraum. Wenn der Timeout-Zeitraum zu lang ist, wirkt sich dies auf den Test aus Wenn der Code während der Entwicklung zu einem Produkt wird, hat dies große Auswirkungen auf die Benutzererfahrung. Wie kann diese Dauer festgelegt werden? Werfen wir einen Blick auf die ausführliche Einführung:
Die Socket-Klasse stellt eine Methode bereit:
public void connect(SocketAddress endpoint, int timeout) throws IOException
Parameter:
Endpunkt – SocketAddress, die Host-IP und Port bereitstellt
Timeout – Zu verwendender Timeout-Wert (in Millisekunden).
Diese Methode wird verwendet, um den Socket mit dem angegebenen Server zu verbinden und einen Timeout-Wert festzulegen. Wenn der Timeout-Wert auf größer als 0 eingestellt ist, wird bei Auftreten des Timeouts eine Ausnahme ausgelöst und die Verbindung wird gestoppt.
Daher können Sie den Timeout-Zeitraum der Socket-Verbindung mit der oben genannten Methode festlegen. Der Code lautet wie folgt:
// 设置ip和prot String ip = "127.0.0.1"; int port = 8888; // 创建Socket Socket client = new Socket(); // 设置发送地址 SocketAddress addr = new InetSocketAddress(ip, port); // 超时1秒,并连接服务器 client.connect(addr, 1000);
Erläutern Sie die oben genannten Klassen SocketAddress und InetSocketAddress Um Socket-Verbindungen zu erstellen, ist Erstere eine abstrakte Klasse und Letztere ist eine Unterklasse der Ersteren. Die Adresse wird durch die Konstruktormethode erstellt:
public InetSocketAddress(String hostname, int port)
Parameter:
Hostname – Hostname, der auch IP sein kann
Port – Portnummer
Darüber hinaus bietet InetSocketAddress auch einige netzwerkbezogene Methoden, z. B. die häufig verwendete Methode zum Abrufen der lokalen IP:
public final InetAddress getAddress()
Diese Methode wird Geben Sie eine InetAddress zurück und beziehen Sie dann die IP über die InetAddress-Methode wie folgt:
public String getHostAddress()
Dann lautet der Code zum Abrufen der lokalen IP:
// client就是上面创建的Socket String host_ip = client.getAddress().getHostAddress();
Das ist es!
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Code-Implementierung für die Socket-Einstellung des Verbindungszeitlimits in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!