# wichtig!! Bitte!! (Nachricht von Server an Client senden)



## multimediarechner (11. Feb 2004)

Grias eich!
Wir haben ein Problem mit den folgenden Programmen! Wir sind Anfänger  :wink: !

Wir wollen auf dem Server eine Taste drücken und diese zum Client senden. Auf dem Client wollen wir anhand dieser Taste ein (externes) Programm (wie z.B.: WinZip) starten.

das sind unsere 4 Programmcodes:

1.  Client-Programm 


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

    class Client {
      public static void main(String[] args) throws IOException {
    
    Socket mvSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    
    try {
      mvSocket = new Socket("172.16.100.190", 4444);
      //Meine IP-Adresse 172.16.100.153 , ansonst Localhost
      out = new PrintWriter(mvSocket.getOutputStream(), true); //Schreibvariable wird vereinbart
      in = new BufferedReader(new InputStreamReader(mvSocket.getInputStream())); //Lese variable wird vereinbart
    } 
    catch (UnknownHostException e) { //Fehler wird abgefangen!
      System.err.println("Host nicht gefunden!"); //User wird benachrichtigt
      System.exit(1);
    } 
    catch (IOException e) {
      System.err.println("kein Server gefunden, bitte erst server starten"); //User wird benachrichtigt
      System.exit(1);
    }
    
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    String fromServer;
    String fromUser;
   
    
    //out.println("Halihalo"); //Es wird eine Nachricht an Server gesendet
    
    while ((fromServer = in.readLine()) != null) { 
      System.out.println("Server: " + fromServer);
    
      
    }
    //Geöffnet Verbindungen werden geschlossen!
    out.close();
    in.close();
    stdIn.close();
    mvSocket.close();
    
  }
}
```

2. ClientThread


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

class ClientThread
extends Thread
{
	private int name; //Name wird vereinbart
	private Socket socket; //Socket wird vereinbart
	
	public ClientThread(int name, Socket socket)
	{
		this.name = name;  //Übergebene Werte werden übernommen
		this.socket = socket; //Übergebene Werte werden übernommen
	}
	
	public void run()
	{
	try{
	 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); //Varibalen zum Lesen u. Schreibern werden vereinbart
     BufferedReader in = new BufferedReader(
                                           new InputStreamReader(
                                                                 socket.getInputStream()));
    String inputLine, outputLine;
    
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
 
	out.println("Connected Sucsessfull!"); //Client erhält Nachricht dass er sich verbinden konnte
	out.println("Grieß di! Sag was: ");  
   
    while ((inputLine = in.readLine()) != null) { //Nachricht von Client wird an Benutzer gesannt.
      System.out.println("Client "+name+ " sagt: "+inputLine);
        if (in.readLine()=="5")
   		 {
    		System.out.println("Hallo");
    	}
      }
  
    socket.close(); //Socket wird geschlossen
	}

    //Fehlermeldung wird abgefangen   
    catch (IOException e) 
  	{
      	System.err.println(e.toString());
    }

 }
}
```

3. Server 

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

class Server {
  public static void main(String[] args) throws IOException {
    
    
 	System.out.println("Verbindung wird aufgebaut..."); //Ausgabe damit Benutzer weis dass Application funktioniert
 
    //ServerSocket serverSocket = null;
    int cnt = 0;
    
    

  try {
  	ServerSocket serv  = new ServerSocket(4444); //Neuer Prot 4444 wird geöffnet
      serv.setSoTimeout( 60000 ); //Timeout wird auf sechs Sekunden gesetzt
      while (true) {
      Socket socket = serv.accept(); //Wenn verbindung möglich und diese Akzeptiert wird 
      (new ClientThread(++cnt, socket)).start(); //wird neuer Thread erzeugt! Übergeben wird die Nummer und der Socket
      }
    } 
    catch (IOException e) {   //Fehler wird aufgefange
      System.err.println("Leider ist der port 4444 belegt :-("); //Benutzer erhält Info
      System.exit(1);
    }
 
  }
}
```

4. Programm starten


```
import java.awt.*;
import java.awt.event.*;

public class Eventhandlingvar1
extends Frame
implements KeyListener
{  
  public static void main(String[] args)
  {
    Eventhandlingvar1 wnd = new Eventhandlingvar1();
  }

  public Eventhandlingvar1()
  {
    super("Nachrichtentransfer");
    setBackground(Color.lightGray);
    setSize(300,200);
    setLocation(200,100);
    setVisible(true);
    addKeyListener(this);
  }
  
  public void paint(Graphics g)
  {
    g.setFont(new Font("Serif",Font.PLAIN,18));
    g.drawString("F1 für taschenrechner",10,50);
  }

  public void keyPressed(KeyEvent event)
  {
    if (event.getKeyCode() == KeyEvent.VK_F1)  {
      try { 
          Runtime.getRuntime().exec("C:\\WINNT\\system32\\calc.exe");
    } catch (Exception e) 
          { 
            System.err.println(e.toString()); 
          }  
  }
}

  public void keyReleased(KeyEvent event)
  {
  }

  public void keyTyped(KeyEvent event)
  {
  }

}
```

Würden uns freuen wenn ihr uns helfen würdets! Dieses Programm ist sehr wichtig für uns!

MFG 
Multimediateam


----------



## Roar (11. Feb 2004)

da hab ich doch schon geantwortet: http://www.java-forum.org/de/topics/java_2376.html
kanns sein dass deine letzten drei threads hier im netzwerk forum genau das gleiche problem behandeln wolten?


----------



## Asha'man (16. Feb 2004)

sorry, richtige Antwort im falschen Thread. Ignoriert mich einfach.


----------

