# Netzwerk?



## Finalplayer_Ryu (6. Dezember 2007)

Ich würde gerne mein Spiel Netzwerkfähig machen, ich habe gesucht, jedoch fand ich keine gute Erklärung wie man eine Verbindung über TCP aufbaut. Was Client und Server machen sollen und wie häufig sie Daten senden sollten und wie sie mit diesen umgehen ist mir klar, ich brauch nur einen kleine Einführung wie man die Verbindung aufbaut und wie man Daten senden/empfangen kann.


----------



## _jsd_ (6. Dezember 2007)

hi,

Versuche es mit:

http://www.google.de/search?client=...t&sourceid=opera&ie=utf-8&oe=utf-8&lr=lang_de
Javainsel
JavaBook usw.

eigentlich gibts in jedem javabuch/tutorial mind. ein bsp. über socket programmierung

hmf


----------



## Finalplayer_Ryu (6. Dezember 2007)

Danke für die schnelle Antwort^^

Socket... auf das Wort wäre ich nie gekommen...

Das erste Ergebnis
http://www.peuss.com/java/Sockets.php
war gleich ein Volltreffer... werde es mal ausprobieren und dann ein Feedback geben, ob es damit klappt oder nicht.


----------



## _jsd_ (6. Dezember 2007)

du hättest aber auch mit java und tcp bei google ne menge treffer bekomm....

viel spaß, hmf


----------



## Finalplayer_Ryu (6. Dezember 2007)

java tcp... da hab ich nur unnötig komplizierte Quellcodes, Tutorials und Beispiele gefunden, welche über 200-1000 Zeilen gehen...


----------



## Finalplayer_Ryu (7. Dezember 2007)

So... nun bin ich auf ein Problem gestossen:

Da ich ganze Objekte übers Netzwerk verschicken möchte nutze ich ObjectInputStream und ObjectOutputStream, jedoch kommen die Daten nicht an oder werden gar nicht erst verschickt, bei Nutzung von InputStream und OutputStream hat es noch geklappt...

Server:

```
try {
			client = server.accept();
			output = new ObjectOutputStream(client.getOutputStream());
			while(true) {
				try {
					output.writeObject(nds);
					output.flush();
				} catch(NotSerializableException e) {}
			}
		} catch(Exception e) {
			System.out.println(e);
		}
```

Client:

```
try {
			server = new Socket(IP, port);
			input = new ObjectInputStream(server.getInputStream());
			while(true) {
				try {
					nds = (NetDataServer)input.readObject();
				} catch(NotSerializableException e) {}
			}
		} catch(Exception e) {
			System.out.println(e);
		}
```

nds ist das Objekt das ich versenden möchte und implementiert das Interface Serializable.


----------



## Chimaira (7. Dezember 2007)

du musst die Daten in Bytes zerlegen und diese dann einzeln über die Leitung schieben. (Byte für Byte) =)


```
//Die Datei, die auf den Server / Zielrechner soll
File file = new File("tmp.mp3");

//Verbindungsaufbau
Socket client = new Socket(1234);
FileReader fiRe = new FileReader(file);
OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());

int tmp = 0;

//Byte für Byte auslesen und verschicken!!
while((tmp = fiRe.read()) != -1){
 out.write(tmp);
}

out.close();
```

Ob funktioniert weiß ich nicht, aber müsste normaler Weise. Habe das jetzt im Browser geschrieben und nicht in Eclipse. Wenn noch Probleme auftauchen, dann gucke ich mal in Eclipse nach!

Ach ja: Bei dem Server musste das dann umgekeht machen --> nicht OutputStreamWriter sondern InputStreamReader 

Greeze Chimaira


----------



## _jsd_ (7. Dezember 2007)

Hi,

wenn Du Objekte übers LAN senden willst nimm lieber RMI oder CORBA ist für solche Fälle eher geeignet...

hmf


----------

