# Problem beim empfangen von Daten (Zahlen)



## IceTi (4. Jun 2008)

Hallo,

ich habe da ein Problem mit dem empfagen von Daten bei meinem Java Socket Client. Dieser bekommt Daten von einem C-Server. Es handelt sich dabei immer nur um Zahlen.

Hier der Client:

```
public class Client{

	// Variablen 
	private int port = 4711;	
	private String serverName = "192.168.0.130";
//	private String serverName = "localhost";
	private Socket server;
	private BufferedWriter out;	
	public BufferedReader in;
	public InputStream input;
	
	// Konstruktor
	Client() throws IOException{
		server = new Socket (serverName, port);
		out = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));
		input = server.getInputStream();
		in = new BufferedReader(new InputStreamReader(server.getInputStream()));
	}
	
	// Sendet Daten an den Server
	public void sendData(String outgoing) throws IOException{
		out.write(outgoing);
		out.newLine();
		out.flush();
	}
}
```

In der Main hole ich mir die Daten in einem Thread, dass sieht dann so aus:

```
public void run(){
		while(true){
		
    	              System.out.println(client.input.read());

			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {	e.printStackTrace();	}
		}
```


In der Console bekome ich nun auch alle Steuerzeichen, wie z.B: die 10 für new Line. Mit dem BufferedReader funktioniert das auch nicht richtig?
Was mache ich falsch?
Der Server schickt dabei ein char Array glaube ich...


----------



## tuxedo (4. Jun 2008)

Vielleicht solltest du die Daten auf C Seite so aufbereiten, dass Java damit auch was anfangen kann?!

Zudem gibt es ja Sprachenbedingte UNterschiede bzgl. der Repräsentation von Zahlen. Nicht jeder Integer hat die gleiche Anzahl an bytes.

- Alex


----------



## IceTi (4. Jun 2008)

Hmm ... aber es muss doch auch möglich sein, dass Java damit zurecht kommt oder?

Wenn der Server z.B. eine 200 und eine 3 sendet bekommt Java:
200
3
10

Manchmal kommen auch noch anderen Zahlen wie die 13 oder 48 was das für Steuersignale sind, weiss ich aber nicht...


----------



## tuxedo (4. Jun 2008)

DU kannst nicht einfach auf C Seite ein Array senden und dann auf Java Seite ohne zutun "glück" haben dass es genau so ankommt wie es gesendet wurde.

Google doch mal wieviele bytes ein integer in C hat und wieviele in Java. Das gleiche noch für Shorts, Longs und und und. Du wirst überrascht sein. 

Ich hab mit dem Thema schonmal gekämpft (war 2005, musst mal hier im Forum suchen), und es hat ne Weile gedauert bis alles synchronisiert war. 

Knackpuinkt ist eben: "Wie und was wird gesendet", und "wie und was wird gelesen" (nicht was wird erwartet...).

- Alex


----------



## IceTi (4. Jun 2008)

Ja aber die Zahlen kommen ja alle so an wie erwartet. Nur die Steuerzeichen müsste ich da raus hauen.

Wenn ich es mit dem BufferedReader mache bekomme ich für 
200
3

dann "EP" als STring. Wie könnte ich diesen String vielleicht wieder als Integer darstellen ?


----------



## tuxedo (4. Jun 2008)

*Er will es einfach nicht verstehen* *aufgeb*


----------



## Gast (4. Jun 2008)

Möchte mir jemand anders helfen?


----------



## IceTi (5. Jun 2008)

Eigentlich stellt sich mich ja nur die Frage, wie ich unte rJava vernüfitg ein char Array empfangen kann odeR?!


----------

