2010-10-17 4 views
2

Quel est le problème avec le programme suivant pour récupérer l'heure à partir du serveur de temps.Java: exemple de programmation de socket

public class SocketTest 
{ 
    public static void main(String[] args) 
    { 
     Socket s = new Socket(“time-A.timefreq.bldrdoc.gov”, 13); 
      BufferedReader in = new BufferedReader(
        new InputStreamReader(s.getInputStream())); 
     String line; 
     do 
     { line = in.readLine(); //read line of text from socket 
       if (line != null) System.out.println(line); 
     } 
     while(line != null); 
    } 

} 

Répondre

5

La citation des marques doivent être " au lieu de . Autrement dit, vous devriez avoir

Socket s = new Socket("time-A.timefreq.bldrdoc.gov", 13); 

plutôt que

Socket s = new Socket(“time-A.timefreq.bldrdoc.gov”, 13); 

En outre, vous aurez besoin pour encapsuler les opérations d'entrées-sorties dans un bloc try/catch, ou déclarer la méthode de jeter IOException.

À part cela, je n'ai pas beaucoup de plaintes. Si vous importez les classes correctement, il imprime quelque chose comme

55486 10-10-17 05:30:44 22 0 0 604.7 UTC(NIST) * 

C'est à peu près comment je l'ai écrit

import java.io.*; 
import java.net.*; 

public class SocketTest { 
    public static void main(String[] args) { 
     try { 
      Socket s = new Socket("time-A.timefreq.bldrdoc.gov", 13); 
      BufferedReader in = new BufferedReader(new InputStreamReader(
        s.getInputStream())); 
      String line; 
      while ((line = in.readLine()) != null) 
       System.out.println(line); 

      s.close(); 
     } catch (IOException ioex) { 
      ioex.printStackTrace(); 
     } 
    } 
} 

Mettez le s.close() à l'intérieur d'un bloc finally si vous êtes Picky et le programme est plus grand que juste un programme de test comme celui-ci.

+0

oups! merci @aioobe – rohit

+0

s.close() devrait probablement être dans le bloc finally. –

+0

Oui, je suis d'accord. :-) – aioobe

2

Vous devez utiliser des guillemets doubles (") pour entourer les chaînes, Il semble que vous utilisez guillemets inversés:

new Socket(“time-A.timefreq.bldrdoc.gov”, 13); 
     ^      ^