Я написал эту простую программу Java, которая подключается к внутреннему серверу и возвращает данные о домене. Тем не менее, у меня возникла странная проблема. Я могу казаться глупым, но вот программа!Использование буферизованного считывателя и Socket
import java.io.*;
import java.net.*;
public class SocketTest {
public static void main(String[] args) {
String hostName;
int i = 0;
try {
Socket socketClient = new Socket("whois.internic.net", 43);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
InputStream in = socketClient.getInputStream();
OutputStream out = socketClient.getOutputStream();
System.out.println("Please Enter the Host Name!!");
hostName = bf.readLine();
hostName = hostName + "\n";
byte[] buf = hostName.getBytes();
out.write(buf);
while((i = in.read()) != -1) {
System.out.print((char)i);
}
socketClient.close();
} catch(UnknownHostException uht) {
System.out.println("Host Error");
} catch(IOException ioe) {
System.out.println("IO Error " + ioe);
} catch(Exception e) {
System.out.println("Exception " + e);
}
}
}
Программа работает нормально, без каких-либо ошибок во время выполнения, но он не показывает выхода, когда я пытаюсь напечатать результат от Internic сервера в последней части Ьги блока. Я попробовал переупорядочить код и обнаружил, что если я поместил bf.readLine()
после создания потоков сокетов, выхода нет. Однако, если я помещаю его перед созданием сокета (в начале основного метода), программа отображает предполагаемый вывод.
Есть ли какой-либо конфликт или так? Я новичок в сети на Java. Решение может быть очевидным, но я не могу понять! Пожалуйста, помогите мне!!!
Вы должны отступа код правильно, это нечитаемо. – skaffman