Hirdetés

Új hozzászólás Aktív témák

  • tboy93

    nagyúr

    Sziasztok!

    Tetszőleges számú androidos eszköz között (2-50db), wifi-n keresztül, internet nélkül, milyen osztályokkal/metódusokkal kommunikálhatok a leghatékonyabban? Próbálkozom az UDP-vel, ilyen módon:

    Küldés:

    public static class MessageSender extends Thread {

    private volatile boolean flag = true;

    @Override
    public void run() {
    while (flag) {
    if (SharedData.messages.size() != 0) {
    try {
    byte[] data = SharedData.messages.get(0).getBytes();
    DatagramSocket socket = new DatagramSocket();
    DatagramPacket packet;
    packet = new DatagramPacket(data, data.length, InetAddress.getByName(SharedData.broadcastAddress),
    52202);
    for (int i = 0; i < SharedData.packageQuantity; i++) {
    socket.send(packet);
    Thread.sleep(SharedData.packageDelay);
    }
    socket.close();
    SharedData.messages.remove(0);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }

    public void stopThread() {
    flag = false;
    }
    }

    Fogadás:

    class MessageListener extends Thread {

    public volatile boolean flag = true;

    @Override
    public void run() {
    while (flag) {
    byte[] buf = new byte[64];
    try {
    DatagramSocket socket = new DatagramSocket(10002);
    DatagramPacket packet = new DatagramPacket(buf, buf.length);
    socket.receive(packet);
    socket.close();
    int len = packet.getLength();
    byte[] data = packet.getData();
    final String message = new String(data, 0, len);

    ...

    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }

    A problemám az, hogy rettentően sok üzenet veszik el, illetve nem biztosított, hogy ha a server küld egy üzit a hálózatra, akkor azt megkapja az összes kliens. Ezt próbáltam meg kiküszöbölni a küldő részben azzal, hogy többször elküldöm kis szünetekkel ugyan azt az üzenetet, de így sem tökéletes, közel sem.

    Teljesen rossz irányba mentem el? Vagy csak valami apróság miatt csúszik el az egész?

Új hozzászólás Aktív témák