Précédent   Forum des professionnels en informatique > Systèmes > Linux > Réseau
Réseau Vos questions autour des réseaux et télécoms sous Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2007, 10h49   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 41
Points : 13
Points : 13
Par défaut command pour fermer une socket

Bonjour,

Je suis débutante en linux. Je voudrais savoir s'il y a un command qui permet de fermer un socket? Parce qu'en ce moment je fais pas mal de tests autour des sockets, et chaque fois meme si le process est mort il faut encore attendre longtemps avant que les sockets se ferment definitivement. Du coup je ne pouvais pas relancer mes tests toute suite après...
Merci!
yli_ren est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h14   #2
Rédacteur/Modérateur
 
Avatar de millie
 
Inscription : juin 2006
Messages : 6 929
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : juin 2006
Messages : 6 929
Points : 6 714
Points : 6 714
Les sockets sont automatiquement fermés à la fin du processus... Tu n'as pas plutôt un problème au niveau du bind sur un port particulier ?
__________________
Je ne répondrai à aucune question technique en privé
millie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 11h59   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 41
Points : 13
Points : 13
En fait les sockets sont effectivement automatiquement fermés après la mort des process. Mais j'ai l'impression que ça ne se passe pas toute suite. J'ai l'impression qu'il faut attendre une minute ou deux avant qu'ils disparaissent vraiment dans la liste de "netstat" alors que les process ont disparu de "ps" depuis un moment...
yli_ren est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 10h43   #4
Rédacteur/Modérateur
 
Avatar de millie
 
Inscription : juin 2006
Messages : 6 929
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : juin 2006
Messages : 6 929
Points : 6 714
Points : 6 714
Je pense que ce problème vient du côté serveur quand tu utilises bind. Si je dis ça, c'est parce qu'on a typiquement une erreur avec bind (utilise perror pour voir le type d'erreur) quand on ferme une application sauvagement et que l'on cherche à nouveau à écouter sur le même port que précédemment.

Le man spécifie qu'il est nécessaire d'utiliser unlink pour débinder tout de suite.
http://www.linux-kheops.com/doc/man/...n2/bind.2.html

Ceci peut certainement dépendre des implémentations.

En effet, pour entamer le bind, on fait souvent quelque chose du genre :
Code C++ :
1
2
3
4
5
6
7
8
9
10
11
  dest.sin_family = AF_INET;
  dest.sin_port = htons(port); //conversion vers le numéro de port
  dest.sin_addr.s_addr = INADDR_ANY; //connexion chez tout le monde
 
 
  if(bind(socket_connection, (const struct sockaddr*) &dest, sizeof(dest)) == -1)
  {
    perror("bind");
    close(socket_connection);
    return -1;
  }

Mais si on le lance deux fois de suite sur un même port, il ne va pas être content
__________________
Je ne répondrai à aucune question technique en privé
millie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h10.


 
 
 
 
Partenaires

Hébergement Web