AWT datagram.send() per Button

eysl

Mitglied
Hallo,

also ich habe mir einen kleinen ChatServer gebaut, der Datagramme empfängt und weiterleitet.
Jetzt sitze ich am Clienten.
jedoch klappt etwas nicht und ich bin überfragt, auch gerade wie viel Code ich poste:

Java:
public class ChatClient extends Panel
{
    TextArea ta = new TextArea();
    TextField tf = new TextField();
    Button b = new Button("Senden");
    byte[] message_byte;
    ActionListener b1 = new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            message_byte = tf.getByte();
            DatagramPacket pack_send = new DatagramPacket(message_byte, message_byte.length, addr, 7777);
            ds.send(pack_send);
/* Fehlermeldung:
error: cannot find symbol
ds.send(pack_send);
^
*/

        }
    };
    public ChatClient()
    {
...
    }

   
   
    public static void main(String args[]) throws Exception
    {
        new ChatClient();
        InetAddress addr = InetAddress.getByName("localhost");
        DatagramSocket ds = new DatagramSocket();
        DatagramPacket pack = new DatagramPacket(new byte[1024], 1024);
/*        while(true)
        {
            ds.receive(packr);
        } */
    }
}

ich hoffe ihr versteht, was ich will.
Wie teil ich dem Button vom DatagramSocket etwas mit.
Außerdem bereitet mir die Zeile auch Schwierigkeiten.
Java:
InetAddress addr = InetAddress.getByName("localhost");
Sie wird zum Senden gebraucht, aber wo deklariere ich sie am Besten?

Vielen Dank im Voraus und viele Grüße

eysl
 
So, habe es selbst gelöst.

Ich habe dem Konstruktor von ChatClient den DatagramSocket mitgegeben:

Java:
public ChatClient([COLOR=#ff0000]DatagramSocket ds[/COLOR])
    {
        setLayout(new BorderLayout());
        ta = new  TextArea("");
        this.add(ta, BorderLayout.CENTER);
        Panel P = new Panel(new BorderLayout());
        tf = new TextField();
        P.add(tf, BorderLayout.CENTER);
        ok = new Button("OK");
        P.add(ok, BorderLayout.EAST);
        this.add(P, BorderLayout.SOUTH);
        ok.addActionListener(new ActionListener()
        {    public void actionPerformed(ActionEvent e)
            {
                try
                {
              String message_tf = tf.getText();
              message = message_tf.getBytes();
              InetAddress addr = InetAddress.getByName("localhost");
              DatagramPacket pack_send = new DatagramPacket(message, message.length, addr, 7777);
              ds.send(pack_send);   
                } catch(Exception ev) {    System.out.println("Error");
                                        System.exit(0);}
            }
             
        } );
    }

Das Datagram wird nun gesendet und kommt auch beim Server an.

Ich hoffe hier guck nochmal jemand rein 🙂

Frohe Weihnachten

eysl
 

Zurück
Oben