# Server - Client Verbindung mit Java ME



## Frank the B. (17. Apr 2009)

Hey ho Leute,
also ich hab da folgendes Problem bei dem ich (also eigentlich mein Teamkollege) sich den Kopf zerbricht: Und zwar wollen wir in unserem Projekt eine Verbindung über einen Server (also einfach nur ein Rechner) zu einem Handy aufnehmen (Handy hat Java ME ((Also MIDlet)) ) und dann Strings rüberschicken. 
Das Rüberschicken zum Server funktioniert auch schon wunderbar mit nem openoutputstream. Nun aber wollen wir warten bis der Server was schickt aber hier haperts echt noch. Der Server verschickt zwar strings aber der Client (also das Handy) kann leider diese nicht empfangen.
Hier mal ein TeilCode, in welchem der Client EIGENTLICH den String vom Server empfangen müsste:

```
/* der clientSocket ist nur der Socket vom Client */
			InputStream incomingStream = clientSocket.openInputStream();
			byte[] bytes = new byte[incomingStream.available()];
			incomingStream.read(bytes);
			/* Hier weiß ich nicht (also bei der 
			 * while schleife), ob das wirklich notwendig ist 
			 */
			while (bytes.length == 0 && incomingStream.read(bytes) == 0){
				incomingStream = clientSocket.openInputStream();
				bytes = new byte[incomingStream.available()];
				incomingStream.read(bytes);
			}
			String result = new String(bytes,0,incomingStream.available());
			System.out.println(result);
```
tja und das geht nicht, hoffe Ihr könnt uns helfen oder wisst ne bessere Methode das zu realiseren. Ich zähle auf Eure Hilfe 
MfG


----------



## SlaterB (17. Apr 2009)

in Zeile 13 verwendest du incomingStream.available(), welches aber hoffentlich 0 ist, denn du willst doch vorher schon alles in das Array gelesen haben,
also wird wenn überhaupt ein leerer String erzeugt, schreibe lieber

String result = new String(bytes,0,bytes.length);

-------

die vorherige while-Schleife könnte zu einer Endlosschleife führen, wenn nie was gelesen wird,
vielleicht solltest du maximal x ms warten und wenn dann nix da ist, dann erstmal aufhören

ob man mehrmals openInputStream() aufrufen darf, weiß ich nicht,
in jedem Fall sollte der erste Stream doch ausreichen, ist der nicht mehr gut?


----------



## ice-breaker (17. Apr 2009)

SlaterB hat gesagt.:


> in Zeile 13 verwendest du incomingStream.available(), welches aber hoffentlich 0 ist, denn du willst doch vorher schon alles in das Array gelesen haben,



ist available im InputStream nicht immer 0 ?


----------



## Frank the B. (18. Apr 2009)

hey 
danke für die schnellen antworten. also haben jetzt mal die while schleife rausgenommen und den quatsch mit available() geändert in length(). ging aber trotzdem nicht wirklich. aber mein teamkollege hat jetzt gestern die ganze nacht =)=) dran gesessen und eben geschrieben, dass er es hingekommen hat. 
Wenn ihr wollt, poste ich mal den quelltext.
sonst aber vielen dank für die hinweise (die auch zur lösung teilgehabt haben hat er geschrieben) 
mfg


----------

