Java - Comment écouter un port local ?

Fermé
Bahanix - 28 nov. 2009 à 14:10
 Bahanix - 29 nov. 2009 à 10:33
Bonjour à tous !

Je souhaite réaliser en java une petite application qui puisse lire des paquets reçus par une application locale cliente d'un serveur extérieur sur un port donné pour faire des statistiques sur cette application.

Je ne sais malheureusement pas trop comment m'y prendre. Voici ce que j'ai essayé :

public static void main(String[] args){
Socket s;
BufferedReader in = null;
String str = null;
try {
s = new Socket(InetAddress.getLocalHost(), port);
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(true){
try {
str=in.readLine();
if(str != null){
System.out.println("Message : " + str);
}
} catch (IOException e) {
System.out.println("ERREUR readLine");
e.printStackTrace();
}
}
} catch (IOException e) {
System.out.println("ERREUR BufferedReader");
e.printStackTrace();
}
} catch (IOException e) {
System.out.println("ERREUR Socket");
e.printStackTrace();
}
}

Voici ce que j'obtiens après exécution :
ERREUR Socket
Java.net.ConnectException: Connection refused: connect...

Quelqu'un aurait une piste ? Là, mon programme considèrerait ma machine comme un serveur, ce n'est pas vraiment ce que je veux, ie. juste lire ce qu'il y a sur un port local donné.

Merci !

voir le code source avec indentation et coloration syntaxique
A voir également:

1 réponse

J'ai trouvé une solution en attendant : utiliser Wireshark et capturer les paquets sur le port qui m'intéresse. Puis parser les logs. Mais j'aurai aimer pouvoir faire la même chose avec un seul logiciel. D'ailleurs je n'ai pas (encore) trouvé comment démarrer automatiquement la capture au démarrage.

Pour l'erreur du dessus, elle se fait même si je l'exécute avec les droits administrateurs.
0