# Java > Dveloppement Web en Java > Servlets/JSP >  Scanner les ports d'une machine distante

## ramzouni

J'ai un programme Java qui permet de scanner un port d'une machine mais le problme que ce programme n'est fonctionnel que sur la machine locale je ne sais pas pourquoi si je change l'adresse IP par une autre distante connecte  mon PC ne veut pas s'excuter
voila mon programme qui contient une classe Pscanner el main le 2 sous un package fabrekscan:


```

```

le main


```

```

Merci de me corriger les fautes afin que mon programme sera excutables mme avec des machines distantes.

----------


## tchize_

peux tu afficher toute tes exceptions (y compris la ioexception) et nous faire un copier / coller de celle qui se dclenche avec tout son stacktrace.

----------


## ramzouni

*C'est ce que j'obtiens aprs l'excution toujours:

init:
deps-jar:
compile:
run:
Server is not listening on port 80 of 192.168.1.2
Bye from NFS
BUILD SUCCESSFUL (total time: 14 seconds)
*
 ::roll::

----------


## tchize_

affiche la IOException s'il te plait, qu'on aie le message exacte.

----------


## ramzouni

Mais comment je peux afficher l'exception. Rien ne s'affiche!!! ::(:

----------


## tchize_

ex.printStackTrace() dans ton catch (IOException ex)

----------


## ramzouni

Voil donc l'exception:

run:
Server is not listening on port 80 of 192.168.1.2
java.net.SocketException: Network is unreachable: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
Bye from NFS
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:516)
        at java.net.Socket.connect(Socket.java:466)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:179)
        at fabrekscan.PScanner.scan(PScanner.java:15)
        at fabrekscan.main.main(main.java:28)
BUILD SUCCESSFUL (total time: 11 seconds)

----------


## tchize_

> Network is unreachable: connect


Le rseau que tu vise (192.168.1.xxx) n'est pas accessible depuis ta machine o tu lance le programme -> vrifie ta configuration rseau, ce n'est pas un problme du  java.

----------


## ramzouni

*Ok Merci pour votre aide* ::king::

----------


## ramzouni

*Est ce que je peux minimiser de code dans JSP et le mettre dans la classe PScanner car l'excution et trs longue mme le rafrachissement?* ::(:

----------


## ramzouni

la classe PScanner:



```

```








La page JSP:



```

```

----------


## ramzouni

Si le port est en marche on aura une flche verte up.
Sinon une flche rouge Down.

Sur localhost l'excution est rapide.

Sur une machine distante, elle trs longue > 30 secondes.
 ::(:

----------


## _skip

Si la machine rpond pas, c'est long avant d'atteindre le timeout.
Utilise un timeout plus court.

----------


## ramzouni

C'est pas a.
Lorsque j'actualise la page j'attends une longue dure pour qu'elle s'affiche.

----------


## ramzouni

Comment changer le timeout ??? :8O:

----------


## tchize_

pour spcifier les timeout, il faut passer par ce genre de code:


```

```

----------


## ramzouni

J'ai mis ce code dans la classe PScanner mais il n'a rien chang.

----------


## tchize_

c'est que c'est pas le scan mais la machine distante qui met du temps  rpondre.

Si tu change ton jsp comme ceci, ca donne quoi comem affichage?



```

```

----------


## ramzouni

Il m'a donn a avec les images des flches up et down.

DNS lookup ralis en 0 millisecondes
up
scan ralis en 16 millisecondes DNS lookup ralis en 0 millisecondes
up
scan ralis en 16 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 500 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 11046 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 12782 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 11031 millisecondes DNS lookup ralis en 0 millisecondes
up
scan ralis en 0 millisecondes DNS lookup ralis en 0 millisecondes
up
scan ralis en 16 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 515 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 21453 millisecondes DNS lookup ralis en 0 millisecondes
down
scan ralis en 15657 millisecondes

----------


## ramzouni

Le retard ne se fait que si le service est down ou la machine est dconnecte.

----------


## _skip

Donc c'est clairement un problme de timeout trop long. Voir mon post prcdent.

----------


## ramzouni

J'ai chang le timeout mais rien ne s'est pass!!

----------


## tchize_

as tu bien compil et mis sur le servuer le code modifi? Parce qu'il n'y a pas de raison que le timeout ne sois pas respect. On peux voir le code modifi?

----------


## ramzouni

Voil la classe PScanner que j'ai modifie:



```

```

----------


## tchize_

peux tu modifier le code comme ceci et nous donner le rsultat?



```

```

et nous dire ce qui s'affiche dans ta console?

----------


## ramzouni

O je mets ce code dans la mme  application web ou dans une application normale car j'ai modifi le code et j'ai le meme temps d'excution que prcdent!!

----------


## tchize_

dans ton PScanner

----------


## ramzouni

Je l'ai essay mais sans changement tu as mis System.out alors qu'on est sur Web!

----------


## tchize_

regarde ce que ca affiche dans la console de ton conteneur webapp (vu que je suis dans une mthode, j'ai pas beaucoup d'autre choix que system.out)

----------


## ramzouni

Le rsultat est le mme!!
Le problme est que lorsque la machine est dconnecte le programme se tente de rechercher les services alors qu'il doit passer  la machine suivante!!

----------


## tchize_

elle affiche quoi la console dans ton conteneur?

----------


## ramzouni

Elle affiche un tableau qui contient les informations sur chaque machine avec les tats des services(flche UP ou flche Down).

----------


## tchize_

la console, l ou doit appareitre les system.out du code que je t'ai demand de changer.

----------


## ramzouni

*Voil la console run:*
init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
compile:
compile-jsps:
do-dist:
dist:
Starting server Bundled Tomcat (5.5.17)
Starting Tomcat process...
Waiting for Tomcat...
Tomcat server started.
Incrementally deploying http://localhost:8084/Essai
Completed incremental distribution of http://localhost:8084/Essai
run-deploy:
Browsing: http://localhost:8084/Essai/
run-display-browser:
run:
BUILD SUCCESSFUL (total time: 22 seconds)


Est ce que je peux afficher le rsultat sur console alors que l'application est de type Web?

----------


## tchize_

la console de tomcat, normalement, se trouve dans catalina.out, sauf si t'a dmarr tomcat avec des paramtres particuliers (c'est pas parce que c'est une application web qu'elle n'a pas de console pour afficher ses logs, heureusement)

----------


## tchize_

Pour information, ici, ce code:


```

```

Affiche ceci:



```

```

Preuve que le timeout est une solution qui fonctionne. La seule raison pour laquelle ca ne fonctionnerais pas dans ton cas, serait que tu n'a pas mis  jour le code sur ton serveur java / ou que tu n'a pas compil le code avec les timeout / ou que tu regarde la mauvaise webapp, bref tout ce qui est au del du code et rsultat d'erreur de manipulation.

----------

