Przesyłanie float'ów przez socket

0

Witam, piszę aplikację klient-serwer.
Chcę przesyłać float'y z klienta do serwera.

Klient tworzy strumień:

out = new PrintWriter(clientSocket.getOutputStream(), true);

a następnie przez niego śle:

public void send(float[] toSend){
		out.print(toSend[0]);
		out.print(toSend[1]);
		out.print(toSend[2]);
		}

Serwer tworzy skaner:

s = new Scanner(new BufferedReader(new InputStreamReader(clientSocket.getInputStream())));

A następnie próbuje czytać:

for(int i = 0; i<3; i++){
        	tmptab[i] = s.nextFloat();
        	}

Sęk w tym, że przy debugowaniu widzę, że print'y są przez klienta wykonywane, natomiast serwer nie wychodzi poza linię czytania (tak jakby skaner go blokował w oczekiwaniu na float'a).
Co zrobiłem źle? Czyżby PrintWriter i Scanner nie dogadywały się ze sobą?

0

Chyba zapomniałeś spacji między kolejnymi tokenami :)

0

Żeby zrobić przerwy zmieniłem wysyłanie u klienta na:

public void send(float[] toSend){
		out.println(toSend[0]);
		out.println(toSend[1]);
		out.println(toSend[2]);
	}

ale wtedy dostaję:

Exception in thread "MyServer" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Unknown Source)
	at java.util.Scanner.next(Unknown Source)
	at java.util.Scanner.nextFloat(Unknown Source)
	at MyServer.run(MyServer.java:43)

linia 43 to oczywiście:

tmptab[i] = s.nextFloat();
0

Możliwe że w innych miejscach w programie masz coś skopane. W celach debugowania zamiast lini 43 napisz System.out.println(s.next()); i zobacz co wyjdzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1