Udp senden funktioniert nur sporadisch

  • 2 Antworten
  • Letztes Antwortdatum
P

philips0815

Neues Mitglied
0
Guten Abend.

Habe durch längeres probieren und Forensuchen nun endlich einen halbwegs funktionierenden Code zusammen um ein Udp Packet an einen Pc zu senden.
Funktioniert soweit nicht schlecht.
Jedoch kommt nicht jedes Packet an. Muss dann einige Sekunden warten bis ich das nächste Packet senden kann.

Code:
package com.example.udptest;
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.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
 
public class UdptestActivity extends Activity 
{
 
 EditText text;
 EditText adresse;
 EditText portnummer;
 String msg;
 String adr;
 int port;
 
     public void onCreate(Bundle savedInstanceState) 
     {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_udptest);
     }
          public void onClick(View v) 
          {
                 text = (EditText)findViewById(R.id.message);
                 adresse = (EditText)findViewById(R.id.adresse);
                 portnummer = (EditText)findViewById(R.id.port);
                 msg = text.getText().toString();
                 adr = adresse.getText().toString();
                 port = Integer.parseInt(portnummer.getText().toString());
 
                 Runnable runnable = new Runnable() 
                 {
                  public void run() 
                  {      
                   EditText adresse;
                      InetAddress ipadr = null;
                             try 
                             {
                                 ipadr = InetAddress.getByName(adr);
                             }   catch (UnknownHostException e) {
 
                                 e.printStackTrace();
                             }
 
                             DatagramSocket s = null;
                             try {
                                 s = new DatagramSocket();
                             } catch (SocketException e) {
 
                                 e.printStackTrace();
                             }
                             byte[] data = msg.getBytes();
                             DatagramPacket p = new DatagramPacket(data, data.length, ipadr, port);
                             try {
                                 s.send(p);
                                 s.close();
                             } catch (IOException e) {
 
                                 e.printStackTrace();
                             }
                             return;
                  }
               };
               Thread mythread = new Thread(runnable);
               mythread.start();
 
 
 
          }
}

Jemand vielleicht eine Idee?
Danke schon mal!!!
 
UDP garantiert von Grundauf schon nicht, das Pakete ankommen. Ein UDP Paket kann jederzeit verloren gehen. Das kann schon im Netzwerkpuffer passieren, während der Übertragung (WLAN ist sehr anfällig), oder im Switch/Router, oder auf dem Weg zum empfänger, etc.

Wenn die Garantie nötig ist -> TCP.
 
Danke für die Antwort.
Problem lag am UDP Server Programm welches ich auf dem PC laufen hatte.
An meinem arduino microcontroller kam jedes Paket an.
TCP wäre nicht schlecht jedoch in der Programmierung etwas komplizierter.
 

Ähnliche Themen

AnnaBauer21
Antworten
0
Aufrufe
476
AnnaBauer21
AnnaBauer21
AnnaBauer21
Antworten
6
Aufrufe
951
AnnaBauer21
AnnaBauer21
Zurück
Oben Unten