array übers netzwerk (anfänger)

Status
Nicht offen für weitere Antworten.

alias_host

Aktives Mitglied
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?
 
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
 
ich habe versucht einen string zu verschicken und diesen mit dem gleichen pc enpfangen und auszugeben:

Code:
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.
 
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:

Code:
				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.
 
Gewöhn Dir das
Code:
catch(Exception e){}
möglichst schnell ab.

Besser:
Code:
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.
 
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?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben