Есть два класса: Сервер:
| Код | package Server;
import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger;
public class Main { public static void main(String[] args) { try { ServerSocket sock = new ServerSocket(4444); Properties prop = new Properties();
prop.setProperty("myPr1", "val1"); prop.setProperty("myPr2", "val2"); prop.setProperty("myPr3", "val3");
Socket s = sock.accept(); OutputStream out = s.getOutputStream(); prop.store(out, "Hi there"); out.flush(); System.out.println("Props stored"); Thread.sleep(5000); s.close(); sock.close(); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } }
}
|
Клиент:
| Код | package Client;
import java.io.InputStream; import java.net.Socket; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger;
public class Main {
public static void main(String[] args) { try { Socket sock = new Socket("127.0.0.1", 4444); Properties prop = new Properties(); InputStream in = sock.getInputStream(); prop.load(in); System.out.println(prop); Thread.sleep(1000); sock.close(); } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } }
}
|
Properties.load на клиенте завершается только после закрытия сокета на сервере. Вопрос: почему и как этого избежать, если я, допустим, хочу постоянно читать Properties в цикле из этого потока? |