, так что я должен был сделать простую клиент-серверную программу. стороне сервера `В то время как цикл в клиент-серверной программе
public static void main(String[] args) throws IOException
{
ServerSocket ss = null;
try{ss= new ServerSocket(119);}
catch(IOException ioe){System.out.println("Can't connect to port.");}
Socket sock = null;
try{sock = ss.accept();}
catch(IOException ioe){System.out.println("Can't connect to client.");}
System.out.println("Connection successful.");
PrintStream out = null;
Scanner in = null;
try{
out = new PrintStream(sock.getOutputStream());
in = new Scanner(sock.getInputStream());
}catch(Exception e)
{
System.out.println("Error.");
}
String line;
String lines = "";
while((line = in.nextLine()) != null)
{
switch(line)
{
case "list":out.println("Printing something");break;
case "loop":
{
FileReader fr = new FileReader("D:\\Eclipse\\TestFiles\\text2.txt");
BufferedReader br = new BufferedReader(fr);
while((lines = br.readLine()) != null)
{
out.println(lines);
}
break;
}
default:
{
if(!(line.equals("end"))) out.println("Unknown command.Try again.");break;
}
}
out.flush();
if(line.equals("end"))
{
out.println("Connection over.");
break;
}
}
try{
in.close();
out.close();
sock.close();
ss.close();
}catch(IOException ioe){}
}
`
стороне клиента
public static void main(String[] args)
{
Socket sock = null;
PrintStream out = null;
Scanner in = null;
Scanner sIn = null;
try{
sock = new Socket("localhost",119);
out = new PrintStream(sock.getOutputStream());
in = new Scanner(sock.getInputStream());
sIn = new Scanner(System.in);
}catch(Exception e){
System.out.println("Error connecting to server.");
System.exit(1);
}
System.out.println("Connection successful.");
String temp = "";
while((temp = sIn.nextLine()) != null)
{
out.println(temp);
while(in.hasNextLine())System.out.println(in.nextLine());
out.flush();
if(temp.equals("end")) break;
}
try{
sock.close();
in.close();
out.close();
}catch(IOException ioe){}
}
Моя проблема заключается в том, что на стороне клиента, когда второй во время цикла (ВКЛ внутри первого во время цикла) должен end, это не так, и я просто вводю команды в клиенте без ответа
вы можете хранить входные данные из входного потока и проверить сказать, если использовать r зашел, тогда в этом случае перерыв из внутреннего цикла while. – SMA
Вы не должны делать этого во вложенном цикле while, здесь вы просто вводите пользовательский ввод бесконечным, даже не отправляя. – Sarz
Ну, в какой-то момент программа работает. Я посылаю команду, и она возвращает правильный ответ, но после того, как она должна сломаться, а это не так.Мне нужно распечатать весь текст, который поступает с сервера с новыми строками, и единственный способ, которым я знаю, что печать всего текста находится в цикле. Если есть лучший способ показать кому-то мне –