# UDP-Daten anzeigen



## do3ysb (8. Sep 2004)

Hallo,
ich benutze folgendes Programm um UDP-Daten zu empfangen

```
import java.net.*;
import java.util.*;

public class UDPServer
{
  public static void main( String args[] )
  {
    try
    {
      DatagramSocket socket = new DatagramSocket( 93 );
      DatagramPacket packet;

      while ( true )
      {
        // Auf Anfrage warten

        packet = new DatagramPacket( new byte[1024], 1024 );
        socket.receive( packet );

        // Empfänger auslesen

        InetAddress address = packet.getAddress();
        int         port    = packet.getPort();
        int         len     = packet.getLength();
        byte        data[]  = packet.getData();

        System.out.println( "Anfrage von " + address +
                            " vom Port " + port +
                            " Länge " + len +
                            "\n" + new String( data, 0, len ) );
      }
    }
    catch ( Exception e )
    {
      System.out.println( e );
    }
  }
}
```

Das funktioniert auch soweit. Leider bekomme ich als ausgabe immer so komische zeichen. Kann man die empfangenen Daten irgendwie in bits wandelt, so das man nur 0 oder 1 sieht? Es geht darum das ich das Protokoll was dort läuft gerne näher betrachten möchte. Daher brauche ich die bits.

Gruss, Sebastian


----------



## P3AC3MAK3R (8. Sep 2004)

Verschoben: Netzwerkprogrammierung


----------



## bernd (9. Sep 2004)

Vieleicht kannste hier was brauchbares für Dich herausholen.
Der funktioniert!
 :wink: 

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.util.*;

/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 19.08.2004
  * @author Bernd
  */

public class UDP_S extends JFrame {
  // Anfang Variablen
  static final JTextPane jtp1 = new JTextPane();
  static final String newline = System.getProperty("line.separator");
  private JTextPane jtpeingabe = new JTextPane();
  private JButton jbusenden = new JButton();
  private JScrollPane jsp1 = new JScrollPane();
  private JButton jbuende = new JButton();
  private JScrollPane jsp2 = new JScrollPane();
  private JButton jbubeenden = new JButton();
  private JComboBox jcbIP = new JComboBox();
  private JButton jbuHost = new JButton();
  private JLabel jlbHost = new JLabel();

  // Ende Variablen

  public UDP_S(final String title){

    // Frame-Initialisierung
    super("Bernd sein Intranet - Chat, Version 1.0");
    addWindowListener(new WindowAdapter() {
      public void windowClosing(final WindowEvent evt) { System.exit(0); } });
    setBounds(20, 20, 600, 525);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten

     jtp1.setBounds(5, 5, 300, 370);
     jtp1.setEnabled(false);
     jtpeingabe.setBounds(5, 370, 300, 80);
     getContentPane().add(jtp1);
    getContentPane().add(jtpeingabe);
    jbusenden.setText("senden");
    jbusenden.setBounds(5, 455, 80, 25);
    getContentPane().add(jbusenden);
    jbusenden.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbusendenActionPerformed(evt); } });

    jsp1.setViewportView(jtp1);
    jsp1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    jsp1.setBounds(5, 5, 300, 300);
    getContentPane().add(jsp1);
    jsp2.setBounds(5, 370, 300, 80);
    jsp2.setViewportView(jtpeingabe);
    getContentPane().add(jsp2);
    jbubeenden.setText("beenden");
    jbubeenden.setBounds(480, 455, 100, 25);
    getContentPane().add(jbubeenden);
    jbubeenden.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbubeendenActionPerformed(evt); } });
        
    jcbIP.addItem("");
    jcbIP.addItem("192.168.0.2");
    jcbIP.addItem("192.168.0.3");
    jcbIP.setEditable(true);
    jcbIP.setBounds(310, 5, 100, 25);
    jcbIP.setToolTipText("IP des Zielrechners eingeben!");
    getContentPane().add(jcbIP);

    jbuHost.setText("Hostname + IP");
    jbuHost.setToolTipText("ermittelt Host + IP vom eigenen Rechner");
    jbuHost.setBounds(310, 315, 120, 25);
    getContentPane().add(jbuHost);
    jbuHost.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbuHostActionPerformed(evt); } });

    jlbHost.setText("??? . ??? . ? . ? . ?");
    jlbHost.setBounds(310, 330, 320, 45);
    getContentPane().add(jlbHost);

        JOptionPane.showMessageDialog(this, "Willkommen im chat", "Hallo erst mal ...", JOptionPane.INFORMATION_MESSAGE);
// Ende Komponenten
           setVisible(true);
  }
  // Anfang Ereignisprozeduren

  public void jbusendenActionPerformed(final ActionEvent evt) {
        try
    {

        DatagramPacket packet;
        String ipAdresse = (String) jcbIP.getSelectedItem();
        InetAddress ia = InetAddress.getByName( ipAdresse );
        String s = jtpeingabe.getText();
        packet = new DatagramPacket( s.getBytes(),s.length(),ia,4711 );
        DatagramSocket dSocket = new DatagramSocket();
        dSocket.send( packet );
        String textanzeige = jtp1.getText();
        jtp1.setText(textanzeige + newline + s);
        jtpeingabe.setText("");
        jtpeingabe.requestFocus();
        dSocket.close();
    }
    catch ( Exception e )
    {
      System.out.println( e );
    }
  }

  public void jbubeendenActionPerformed(final ActionEvent evt) {
      System.exit(0);
  }

  public void jbuHostActionPerformed(final ActionEvent evt) {
     try {

        jlbHost.setText( "Host / Adresse: " + InetAddress.getLocalHost());

     }
     catch (Exception e)
     {
      System.out.println( e );
     }
  }

  // Ende Ereignisprozeduren

  public static void main(final String[] args) {
    new UDP_S("UDP_S");
    try
    {
      DatagramSocket socket = new DatagramSocket(4711);
      DatagramPacket packet;
      while (true)
      {
        // auf Anfrage warten
        packet = new DatagramPacket(new byte[1024], 1024);
        socket.receive(packet);
        //Empfang auslesen
        int port = packet.getPort();
        int len = packet.getLength();
        byte data[] = packet.getData();
        String textanzeige = jtp1.getText();
        jtp1.setText(textanzeige + "\n" + new String(data, 0, len));

      }
    }
    catch (Exception e)
    {
      System.out.println(e);
    }

  }

}
```


----------

