Mam problem - o ile wysłanie liczby całkowitej nie sprawia problemów, o tyle wysłanie double czy float już tak. Pomyślałem, żeby zamienić liczbę na string i wysłać je w takiej postaci - tu chyba jest ok. Problem pojawia się jednak przy odbiorze. Skąd mogę wiedzieć, ile bajtów mam odebrać? Nie ma możliwości odbioru stringa, a bufor trzebaby zainicjalizować. Szukałem w necie, ale nic takigo nie znalazłem. Mój problem: jak przesłać i odebrać za pomocą PipedReader, PipedWriter liczbę float/double albo string ? Oto kod:
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
import java.util.Random;
class wyslij extends Thread{
private PipedWriter pw;
public wyslij(PipedReader pr){
try {
this.pw = new PipedWriter(pr);
} catch (IOException ex) {}
}
@Override
public void run(){
try{
double liczba = 0;
Random rand = new Random();
liczba = rand.nextDouble();
String temp = "";
temp += liczba;
System.out.println("Wyslano: "+temp);
pw.write(temp);
} catch (IOException ex) {System.out.println(ex.getMessage());}
}
}
class odbierz extends Thread{
private wyslij s;
private PipedReader pis;
public odbierz(){
this.pis = new PipedReader();
this.s = new wyslij(pis);
}
@Override
public void run(){
double odebrana = 0;
try {
s.start();
while (!pis.ready()) {}
} catch (IOException ex) {}
System.out.println("Odebrano: "+odebrana);
}
}
public class Main {
public static void main(String[] args) {
odbierz m = new odbierz();
m.start();
}
}