Maison  >  Article  >  Java  >  Explication détaillée de l'implémentation du code pour le délai d'attente de connexion du paramètre Socket en Java

Explication détaillée de l'implémentation du code pour le délai d'attente de connexion du paramètre Socket en Java

怪我咯
怪我咯original
2017-07-02 10:17:171729parcourir

Dans nos connexions quotidiennes, si le timeout est trop long, cela affectera le test en cours de développement. L'article suivant partage principalement avec vous le code de paramétrage du timeout de connexion pour Socket en Java. Les amis qui en ont besoin peuvent s'y référer. ci-dessous. Jetons un coup d’œil ensemble.

Avant-propos

Tout le monde sait que si le Socket de Java ne peut pas se connecter à l'hôte avec l'adresse IP et le port spécifiés, il lancera IO Exception exception, et dans des circonstances normales, il y aura une période de temps indéfinie entre la connexion et l'apparition de IOException, ce qu'on appelle le délai d'attente. Si le délai d'attente est trop long, cela affectera le test. pendant le développement. Si le code devient un produit, cela affectera grandement l'expérience utilisateur, alors comment définir cette durée ? Jetons un coup d'œil à l'introduction détaillée :

La classe Socket fournit une méthode :

public void connect(SocketAddress endpoint, int timeout) 
    throws IOException

Paramètres :

  • point de terminaison – SocketAddress fournissant l'adresse IP et le port de l'hôte

  • timeout – Valeur du délai d'expiration à utiliser (en millisecondes).

Cette méthode est utilisée pour connecter le Socket au serveur spécifié et définir une valeur de délai d'attente. Lorsque la valeur du délai d'attente est supérieure à 0, lorsque le délai d'attente se produit, une exception sera levée et la connexion sera arrêtée. Définir la valeur du délai d'attente sur 0 expirera indéfiniment.

Par conséquent, vous pouvez définir le délai d'expiration de la connexion Socket en utilisant la méthode ci-dessus. Le code est le suivant :

// 设置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);

Expliquez SocketAddress et InetSocketAddress ci-dessus. Ces deux classes sont utilisées. pour créer des connexions Socket. Adresse, la première est une classe abstraite, et la seconde est une sous-classe de la première. L'adresse est créée via la méthode constructeur :

public InetSocketAddress(String hostname, int port)

Paramètres :

  • hostname – hostname, qui peut également être ip

  • port – numéro de port

De plus, InetSocketAddress fournit également certaines méthodes liées au réseau, telles que la méthode couramment utilisée pour obtenir l'adresse IP locale :

public final InetAddress getAddress()
Cette méthode permettra renvoie une InetAddress, puis obtient l'IP via la méthode InetAddress comme suit :

public String getHostAddress()
Ensuite, le code pour obtenir l'IP locale est :

// client就是上面创建的Socket
String host_ip = client.getAddress().getHostAddress();
Donc, c'est tout !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn