# array übers netzwerk (anfänger)



## alias_host (28. Jun 2006)

Hi,

ich habe schiffe versenken programmeirt und möchte nun, dass 2 spieler es über das netzwerk spielen können. ich habe aber keine ahnung vom netzwerkprogrammieren. es muss nach jedem zug ansich nur ein 3d array rübergegeben werden. ich habe mal im internet geguckt, habe aber nur etwas von sockeln gelesen.

kann mir jemand dazu ein paar tipps geben?


----------



## waldwichtel (28. Jun 2006)

http://www.java-forum.org/de/viewtopic.php?t=6033
Viel Spass beim lesen  :###


----------



## alias_host (28. Jun 2006)

habe mal noch eine kleine frage:

also ich möchte die verbindung über einen serverthread dauerhaft aufrecht erhalten. wie mache ich das dann mit dem client? und wie kann ich ein 3d array verschicken? strings habe ich jetzt kapiert


----------



## alias_host (28. Jun 2006)

ich habe versucht einen string zu verschicken und diesen mit dem gleichen pc enpfangen und auszugeben:


```
import java.net.*;
import java.io.*;

class ServerThread
{
  public static void main( String args[] ) throws IOException{
//Server starten 
  ServerSocket server = new ServerSocket(1234); 
//   warten auf eine neue Verbindung 
  Socket s = server.accept(); 
  
//socket auf localhost port 1234 konstruieren 
  Socket w = new Socket("localhost",1234); 
//   etwas über den socket versenden 
  BufferedWriter outx = new BufferedWriter(new OutputStreamWriter(w.getOutputStream())); 
  outx.write("Hello World"); 
//   zeilenumbruch senden 
  outx.newLine(); 
  outx.flush(); 
  
  
//   neue Verbindung ist da, wir lesen einfach aus, was sie uns so schickt und schicken 
  BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
  String text = in.readLine(); 
  System.out.println(text);
//   aufräumen 
  in.close(); 
  server.close(); 
  System.out.println(text);
  }
}
```

hat aber irgend wie nicht geklappt. warum? ich ahbe es GENAU so wie oben in der klasse drin.


----------



## alias_host (28. Jun 2006)

habs hinbekommen das problem mit dem array hab ich aber immer noch


----------



## alias_host (28. Jun 2006)

habe alles hinbekommen mache es mit einer schleife...


----------



## alias_host (30. Jun 2006)

noch mal eine frage über das verschicken von arrays:

ich habe einen server und einen client (beide auf dem gleichen rechner) und möchte dem einen ein aray schicken:


```
try {
					Thread.sleep(20);
					  Socket c = new Socket("pc041988",1235);
					  BufferedWriter out = new BufferedWriter(new OutputStreamWriter(c.getOutputStream())); 
					  for(int r=1;r>=0;r=r-1){
							for(int w=0;w<=15;w++){
								for(int e=0;e<=9;e++){
								    out.write(arraySchiffeSchüsseTreffer[r][e][w]);
								    out.newLine(); 
								}
							}
						}
					    out.flush(); 
				}
				catch( Exception ee ) {}

				try{
					server = new ServerSocket(1235); 
					Socket c = server.accept(); 
					BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
					for(int r=0;r<=1;r++){
						for(int w=0;w<=15;w++){
							for(int e=0;e<=9;e++){
								arraySchiffeSchüsseTreffer[r][e][w]=Integer.parseInt(in.readLine());
								System.out.println(arraySchiffeSchüsseTreffer[r][e][w]);
							}
						}
					}
					server.close();
				}
				catch(Exception e){}
```

nun habe ich das problem, das nichts empfangen wird. warum?
die 3 out.write schleifen werden alle durchlaufen. aber die in.read nur bis vor arraySchiffeSchüsseTreffer und dann wird der try block abgebrochen.


----------



## Murray (30. Jun 2006)

Gewöhn Dir das

```
catch(Exception e){}
```
möglichst schnell ab.

Besser:

```
catch(Exception e){
  e.printStackTrace();
}
```


Noch besser: nur die Exceptions fangen, mit denen man zu rechnen hat und für jeden Fall eine angemessene Behandlung überlegen. Aber zur Fehlersuche sollte es erstmal reichen, den Stack-Trace auszugeben.


----------



## alias_host (2. Jul 2006)

habe noch ne kleine frage. ich möchte meinen server öfters starten. aber wenn ich den gleichen port benutze, dann bibt es einen fehler ich muss erst einen anderen nutzen und dann kann ich den alten weiterverwenden, ich möchte aebr nict unnötig viele ports benutzen...

hat hier jemand ne idee?

noch en kleine frage:

ich bin jetzt erst in die netzwrkprogrammierung eingestiegen, habe also bis jetzt nur server und den client über einen computer laufen lassen. nun habe ich die fage: wenn ich es über das "richtige" netzwerk (nicht internet) laufen lassen, gibt es da größere probleme z.b.mit der firewall?


----------

