2010-03-01 3 views
1
import java.net.Socket; 
import java.io.IOException; 

public class Main { 


    public static void main(String[] args) { 
     String remote = "69.163.44.171"; 
     int i = 0; 
     do { 
     try { 
     Socket s = new Socket(remote,i); 
     System.out.println("Server is listening on port " + i+ " of " + remote); 
     s.close(); 

     } catch (IOException ex) { 
     System.out.println("Server is not listening on port " + i+ " of " + remote); 
    } 
     i++; 
     } while(i == 55000); 
} 

Sortie:scanner Java Port

Server is not listening on port 0 of 69.163.44.171 
BUILD SUCCESSFUL (total time: 0 seconds) 

i utiliser en boucle car il est plus rapide, maintenant à la question pourquoi il n'analyse qu'un seul port?

+0

Une boucle while est plus rapide? –

+0

erreur de compilation: manque ';' après 'while (i == 55000)' et en utilisant un 'normal' normal rendrait le code plus lisible ... –

+0

(a) Ce programme est lié au réseau. La façon dont vous bouclez n'a aucune incidence sur ses performances. (b) Il s'agit d'une boucle «do» et non d'une boucle «while». (c) Plus rapide que quoi? Pourquoi? – EJP

Répondre

2

Vous devez changer cela pour votre temps:

while(i <= 55000) 

Actuellement, vous êtes j'atteint (ce qui est 1) = 55000, de sorte que vous laissez tomber hors de la boucle!.

1

Vous dites while(i == 55000) au lieu de while(i <= 55000)

2

Cette partie:

} while(i == 55000) 

répétera la boucle tant quei est exactement 55000.

Depuis i commence comme 0 et est incrémenté à 1 après cela, il n'atteindra jamais cet endroit avec un va Lue d'exactement 55000 et ne jamais recommencer la boucle.

3

Eh bien ... combien de fois fait vous pensez que la condition while(i == 55000) serait true?

0

Le bug de condition While a été noté dans plusieurs réponses, donc je ne vais pas le répéter. Je pourrais faire une suggestion cependant: vous pourriez être en mesure de faire cela plus rapidement si vous utilisez un Selector et quelques SocketChannels plutôt que d'en essayer un à la fois. Here's du matériel de lecture.