# Matrix mit Client-Server



## unbekannt (9. Jan 2009)

Servus an alle,

also ich hab ein Programm mit der ich meine Matrix vom Client an den Server sende. Soweit funktioniert alles.
Mein Client sieht so aus: 

```
try
    	{
    		//create the socket and connect
			Socket socket=new Socket(servername.getText(), 10001);
			//send text
			socket.getOutputStream().write(matrix.toString().getBytes());
			//create buffer and wait
			byte[]b=new byte[128];
			InputStream stream=socket.getInputStream();
			int size=0;
			
			while(size==0)
			{
				size=stream.available();
			}
			//read and show
			stream.read(b);
			erg=new String(b, 0, size);
			
			System.out.println(erg);
			//close connection
			socket.close();
    	}
    	catch(Exception e)
    	{
    		e.printStackTrace();
		}
```


Aber ich hab ein Problem auf der Serverseite. Die Matrix wird byte-weise an den Server gesendet, aber auf der Serverseite muss ich den Datenpaket von byte in ein mehrdimensionales Array umwandeln. Gibt es dafür irgendwelche Methoden, die des für einen machen? Falls es keine gibt, könnte mir da jemand eventuell helfen?


```
try
		{
			int size=0;
			//create a buffer and read the named
			byte[]b=new byte[128];
			InputStream stream=client.getInputStream();
			//awaiting data
			while(size==0)
			{
				size=stream.available();
			}
			//read names
			stream.read(b);
			
			//hier sollte die Konvertierung von byte in [][]array stattfinden
			//send greeting
			client.getOutputStream().write(("Ergebnis: "+Double.toString(Residual.normInf())).getBytes());
			//close connection
			client.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
```


----------



## SlaterB (9. Jan 2009)

was genau kommt denn bei matrix.toString() raus?
findest du dessen Ausgabe nicht absolut wichtig für diese Frage?

alternativ verwende Serialisierung,
siehe Beispiel hier:
http://www.java-forum.org/de/viewtopic.php?t=80771
das letzte Post dort

--------

>         while(size==0) 
>         { 
>            size=stream.available(); 
>         } 

falls das hier länger dauert, läuft die CPU derweil auf 100% Last,
bau doch ein Thread.sleep(50) ein, 0.05 Sekunden warten


----------



## unbekannt (9. Jan 2009)

matrix.toString().getBytes() bedeutet:

Meine Matrix wird in String gewandelt und mit getBytes() wird der erzeugte String-Objekt als bytes an den Server gesendet.


----------



## SlaterB (9. Jan 2009)

aber schau dir doch mal matrix.toString() an (System.out.println),
wenn da nur "ein Matrix-Objekt" drinsteht, dann kannst du dir noch so schlaue Algorithmen überlegen, das wird nie was


----------



## unbekannt (9. Jan 2009)

ok danke


----------

