# LAN tutorial ?



## Stream (9. Jun 2007)

Hallo

Ich will ein "Spiel" über Lan machen hab, aber auf dem Gebiet
nicht so viel ahnung also wollt ich mal fragen ob mal jemmand bitte einen Link
für ein tutorial über Austausch von daten über Lan posten kann.
Wenn jemmand ein Beispiel schicken könnte wär das natürlich
auch super  :wink:


----------



## madboy (9. Jun 2007)

schau mal in die Foren-FAQ


----------



## Stream (9. Jun 2007)

OK

Ich hab das jetzt verstanden, aber jetzt habe ich
eine neue Frage:

Bei heutigen Spielen wird im Lan
automatisch nach dem HOST gesucht.
Wie geht das /Wie kann ich das machen ?


----------



## madboy (9. Jun 2007)

Da fallen mir zwei Möglichkeiten ein. Welche davon benutzt wird, weiß ich aber nicht.

Vorausgesetzt, mit HOST meinst du Server:
1.) Der Server schickt in regelmäßigen Abständen einen Broadcast, dass er Server ist.
2.) Jeder neue Client schickt einen Broadcast mit der Frage "wer ist Server" und der Server antwortet. (wahrscheinlich wird es so gemacht)

Sollten dir Dinge wie "Broadcast" nix sagen, würde ich empfehlen, zuerst n bisschen was über Netzwerke zu lernen. Sonst wirds recht schnell recht schwierig beim Programmieren.


----------



## Stream (9. Jun 2007)

leuchtet mir ein, danke.

Ich wäre trotzdem sehr dankbar wenn noch mal jemand
ein beispiel posten könnte , bitte;


----------



## madboy (9. Jun 2007)

das kommt natürlich drauf an, was genau du machen willst. Als "Grundgerüst" würde sich etwa sowas eignen:


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

public class Server {
    public static void main(String[] args) {

        ServerSocket server = null;
        try {
            server = new ServerSocket(1234);
        } catch (IOException e) {
            e.printStackTrace();
            // ohne Socket hat es keinen Sinn, weiter zu machen ;-)
            System.exit(1);
        }

        while (true) {
            try {
                Socket s = server.accept();
                BufferedReader socketReader = new BufferedReader(
                        new InputStreamReader(s.getInputStream()));
                String line;

                while ((line = socketReader.readLine()) != null) {
                    System.out.println(line);
                }
                socketReader.close();
                s.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}
```


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

public class Client { 
  public static void main(String[] args) { 
    try { 
      Socket s = new Socket("localhost", 1234); 
 
      BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));  
      out.write("blabla\n");  
      out.flush(); 
      out.close();
      s.close();
    } catch (IOException io) { 
      io.printStackTrace(); 
    } 
  } 
}
```


----------



## HoaX (10. Jun 2007)

es gibt noch möglichkeit 3, eine multicast-message zu schicken, aber das ist ehr selben der fall.

bei lanspielen sendet ehr der client eine broadcast-nachricht. (fall 2)

nur der vollständigkeit halber.


----------



## Stream (10. Jun 2007)

Ups,   
ich habe die Frage falsch formuliert ich meinte
eigentlich ein Beispiel für einen Broadcast.

PS: Was macht out.flush()  ?  ???:L


----------



## HoaX (10. Jun 2007)

für einen broadcast benutzt du einfach die broadcast-adresse zum senden und empfangen der daten. im idealfall direkt die des gewünschten interfaces - keine ahnung ob man die in java bestimmen kann. der einfachheit halber kann man aber auch direkt 255.255.255.255 nehmen.

schau in die api-doc? es verarbeitet alle daten im puffer. in einem outputstream werden diese dann gesendet, wenn vorhanden.


----------



## Stream (11. Jun 2007)

DAnke   
Hat mir alles sehr geholfen   
thx


----------

