Skocz do zawartości
knopers11

Prosty serwer UDP

    Rekomendowane odpowiedzi

    Witam, 

       tworze prosta aplikację do wysyłania i odpierania danych po UDP. Niestety mój program nie odbiera danych, albo jednorazowo odbierze jedną paczkę. Jest ktoś w stanie naprowadzić mnie w czym tkwi problem. 

     

    package com.pezet.sender1;
    
    import android.app.Activity;
    import android.net.wifi.WifiConfiguration;
    import android.nfc.Tag;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.os.AsyncTask;
    import android.os.Build;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    import android.app.Dialog;
    import android.widget.Toast;
    
    
    public class MainActivity extends AppCompatActivity {
    
        DatagramSocket socket = null;
        public String adresIp;
        public EditText textAdres;
        public EditText dane;
        public EditText localport;
        public int port;
        public TextView redane;
        public  String Text1 ="dane" ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button) findViewById(R.id.conect);
            TextView text = (TextView) findViewById(R.id.textView);
            button.setOnClickListener(handleClick);
            textAdres = (EditText) findViewById(R.id.ipAdres);
            localport = (EditText) findViewById(R.id.port);
            dane = (EditText) findViewById(R.id.dane);
            redane = (TextView) findViewById(R.id.redane);
            new Thread(new MyDatagramReceiver()).start();
            setTitle("Udp klient");
    
    
        }
    
        private View.OnClickListener handleClick = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                new Thread(new Client()).start();
    
               /// showToastText("wysłane");
                 redane.setText("Wysłane");
    
    
    
            }
    
            ;
        };
    
    
    
        public void showToastText(CharSequence toastText) {
            Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_SHORT).show();
        }
    
    
        public class Client implements Runnable {
            @Override
            public void run() {
                try {
                    adresIp = textAdres.getText().toString();
                    InetAddress adres = InetAddress.getByName(adresIp);
                    port = Integer.valueOf(localport.getText().toString());
                    DatagramSocket socket = new DatagramSocket(port);
                    String buffer = dane.getText().toString();
                    byte[] buf = (buffer).getBytes();
                    DatagramPacket packet = new DatagramPacket(buf, buf.length, adres, port);
                    socket.send(packet);
                    socket.close();
    
    
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (SocketException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
    
                //  redane.setText("dane"+ new String(recpacket.getData())+"ip adres"+ recpacket.getAddress());
            }
        }
    
         private void updatetext(final String dane){
             runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
                     redane.append(dane);
                 }
             });
         }
    
    
    
    
        public class MyDatagramReceiver implements Runnable {
            boolean run = true;
    
            public void run() {
                while (run) {
                    try {
                         byte[] receiveData = new byte[1024];
                         DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
    
                        port = Integer.valueOf(localport.getText().toString());
                        ////DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                            DatagramSocket redata = new DatagramSocket(port);
                            redata.receive(receivePacket);
                            // InetAddress readres = receivePacket.getAddress();
                            /// int porty = receivePacket.getPort();
    
                            ///Text1 = new String(receivePacket.getData()) + readres;
                            Text1 = new String(receiveData, 0, receivePacket.getLength());
                            updatetext(Text1);
    
                            Log.e("ODEBRANE", Text1);
    
    
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    } catch (SocketException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                        run = false;
                    }
                    finally {
                        run = false;
                    }
    
                }
    
    
    
            }
    
            }}

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x