Я лучше объясню свой вопрос и предупредительно извиняюсь за мой плохой английский.Я тренируюсь с пакетом java.net (это аргумент моего следующего университетского экзамена) и пытаюсь лучше контролировать связь между клиентом и устройством сервера.Точнее, я пытался отправить с помощью TCP-соединения 3 разных строки с сервера на клиент за 3 разных раза перед вызовом метода close () для соответствующего Socket.Я узнал, что мой сценарий не работает так, как я предполагал.На стороне клиента я получаю все 3 строки, но только когда закрываю сокет.Вместо этого я хотел бы получить все 3 сообщения сразу после помещения их в поток вывода сервера.Я выложу код серверного скрипта.
Прежде чем критиковать меня, я прочитал этот вопрос, прежде чем писать новый, но он не решил мою проблему. Скрипт нижетело метода run () потока, который управляет моим соединением на стороне сервера.
try{
//Dormi per un pò..
System.out.println("Il Client con ip "+ind+" ed associato all' Handler #"+id+" è in attesa");
Thread.sleep(5000);
PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println("Hi "+ind); //ind is the InetAddress of the connected client
pw.flush();
Thread.sleep(5000);
pw.write("what's up?\n");
pw.flush();
Thread.sleep(5000);
pw.write("I gotta go. Bye\n");
pw.flush();
pw.close();
s.close();
System.out.println("Il Client associato all'Handler #"+id+" si è disconnesso");
}catch(Exception e){
e.printStackTrace();
}
Вот код клиента:
package socket;
import java.net.*;
import java.io.*;
public class MultiThreadClient extends Thread{
private byte[] address={(byte) 192, (byte)168, (byte) 1, (byte)15};
private int destPort=2000;
public MultiThreadClient(){
super();
}
public void run(){
try{
InetAddress ip=InetAddress.getByAddress(address);
Socket s=new Socket(ip,destPort);
s.setReuseAddress(true);
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String message1=br.readLine();
String message2=br.readLine();
String message3=br.readLine();
System.out.println(message1);
System.out.println(message2);
System.out.println(message3);
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[]args){
//for(int i=0;i<3;i++){
MultiThreadClient mtc=new MultiThreadClient();
mtc.start();
// }
}
}