2010-10-17 4 views
2

Что не так в следующей программе для получения времени от сервера времени.Java: Пример программирования сокета

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); 
    } 

} 

ответ

5

Котировальный знаки должны быть " вместо . То есть, вы должны иметь

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

, а не

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

Кроме того, вам необходимо инкапсулировать операций ввода-вывода в Try/поймать блок или объявить метод бросить IOException.

Кроме этого у меня нет особых жалоб. Если импортировать классы правильно, он будет печатать что-то вроде

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

Это примерно, как я написал бы это

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(); 
     } 
    } 
} 

Поместите s.close() внутри, наконец, блок, если вы и программа больше, чем просто тестовая программа, подобная этой.

+0

oops! спасибо @aioobe – rohit

+0

s.close() должно быть, вероятно, внутри блока finally. –

+0

Да, согласен. :-) – aioobe

2

Вы должны использовать двойные кавычки (") заключать строки, выглядит, как вы используете инвертированные кавычки:

new Socket(“time-A.timefreq.bldrdoc.gov”, 13); 
     ^      ^
Смежные вопросы