Program do wysyłania pakietu UDP ?

0

Witam,

Potrzebuję programu który umożliwi wysłanie (pojedynczego)
pakietu UDP. Pakiet taki posiadam zapisany na dysku w pliku jako ciąg
bajtów.
Posiadam program Etheral, ale on zdaje się jest nasłuchiwania na
interfejsach sieciowych i (z tego co zauważyłem) nie umożliwia
wysyłania pakietów.

Jeśli ktoś z was potrafi coś polecić na szybko to b.dziękuje.
Ew. jeśli ktoś z was posiada już napisany taki mini program to też bym
z góry dziękował za podesłanie mi go.

p.s.
jeśli pomyliłem nazewnictwo "pakiet" zamiast "komunikat"/"datagram" przy protokole
UDP - to z góry przepraszam.

0

a tobie to się nie #### z tymi 3 postami :>

//edit: przypominam że moderator czuwa

0

Dostosuj do swoich potrzeb ten program

/* Program do jednostronnej komunikacji między komputerami
 * Komputer odbierający korzysta z portu 9999
 */
import java.net.*;

public class UDP
{
    static int port=9999;
    static final int BUFOR_SIZE=1024;
    static DatagramSocket ds;
    static byte[] bufor=new byte[BUFOR_SIZE];
    static InetAddress ia=null;
    //------------------------
    public static void main(String args[])
    {
        if (args.length==0)
        {
            System.out.println("Użycie programu: java UDP n|o [nr_portu] [nazwa_hosta]");
            return;
        }
        boolean nadawca=false;
        if (args[0].equalsIgnoreCase("n"))
        {
            nadawca=true;
        }
        // numer portu - domyślnie 9999
        if (args.length>1)
        {
            try
            {
                port=Integer.parseInt(args[2]);
            }
            catch(Exception e)
            {
                port=9999;
            }
        }
        // komputer odbierający - domyślnie jest to localhost
        try
        {
            if (args.length>2)
            {
                ia=InetAddress.getByName(args[2]);
            }
            else
            {
                ia=InetAddress.getLocalHost();
            }
        }
        catch(UnknownHostException e)
        {
            System.out.println("Nieznany host: "+e.getMessage());
            return;
        }
        try
        {
            if (nadawca)
            {
                // program pracuje jako nadawca
                ds=new DatagramSocket();
                write();
            }
            else
            {
                // program pracuje jako odbiorca
                ds=new DatagramSocket(port);
                read();
            }
        }
        catch(Exception e)
        {
            System.out.println("Problem: "+e.getMessage());
            return;
        }
    }
    //------------------------
    public static void write() throws Exception
    {
        int pos=0;
        System.out.println("Host: "+ia.getHostName()+" "+ia.getHostAddress()+" Port: "+port);
        System.out.println("Aby wysłać napisz coś i naciśnij ENTER \n Aby skończyć naciśnij TAB i ENTER");
        while (true)
        {
            int c=System.in.read();
            switch (c)
            {
                case '\r':
                 // koniec wiersza w DOS-ie to \r\n, znak \r nie jest wysyłany
                 break;
                case '\t':
                 System.out.println("Koniec pracy nadajnika");
                 bufor[pos++]=(byte) c;
                 ds.send(new DatagramPacket(bufor,pos,ia,port));
                 return;
                case '\n':
                 ds.send(new DatagramPacket(bufor,pos,ia,port));
                 pos=0;
                 break;
                default:
                 bufor[pos++]=(byte) c;
            }
        }
    }
    //------------------------
    public static void read() throws Exception
    {
        System.out.println("Czekam na wiadomości .. (port: "+port+")");
        while(true)
        {
            DatagramPacket dp=new DatagramPacket(bufor,bufor.length);
            ds.receive(dp);
            String input=new String(dp.getData(),0,dp.getLength());
            System.out.println(input);
            if (input.indexOf("\t")>=0)
            {
                break;
            }
        }
    }
}
0
Misiekd napisał(a)

a tobie to się nie pomerdało z tymi 3 postami :>

hehe, nie.. ale to dlatego, że jest mi obojętne czy program będzie "gotowy" czy może uzyskam
kod źródłowy w którymś z tych trzech języków :)
:D

A użytkownikowi "bogdans" Od razu dziękuję i już zabieram się do czytania tego kodu.

0

http://netresearch.ics.uci.edu/kfujii/jpcap/doc/samples.html

tu jest.

Pozdrawiam micro.

P.S. polecam jpcap. fajne narzedzie:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1