Maison  >  Article  >  Java  >  Analyse de cas de code sur la définition du délai d'expiration de connexion pour Socket en Java

Analyse de cas de code sur la définition du délai d'expiration de connexion pour Socket en Java

黄舟
黄舟original
2017-06-18 09:58:471723parcourir

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 sous forme d'unités ).

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 ce qui précède. SocketAddress et InetSocketAddress. Ces deux classes sont utilisées pour créer des adresses de connexion Socket. 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 :


    nom d'hôte – nom d'hôte, il 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 de obtention de l'adresse IP locale :


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


Alors récupérez ceci Le code de l'IP de la machine est :
public String getHostAddress()


Alors, arrêtons-nous ici !
// client就是上面创建的Socket
String host_ip = client.getAddress().getHostAddress();

Résumé

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