Android UDP Socket Sending Client


  1. Android UDP Sending example create a UDP client, send data by AsyncTask or Thread, use DatagramSocket, DatagramPacket
    package com.example.udp_client;
    import android.app.Activity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.RelativeLayout;
    import org.json.JSONException;
    import org.json.JSONObject;
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    /* In manifests file, add 
        <uses-permission android:name="android.permission.INTERNET" /> 
       Run sending UDP data by AsyncTask or Thread */
    
    public class MainActivity extends Activity
    {
        private DatagramSocket ds=null;
        private InetAddress addr;
        private int port;
        byte[] bytes;
    
        @Override protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(
              RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
          RelativeLayout layout = new RelativeLayout(this);
          setContentView(layout, lp);
    
          // prepare data to be sent
          try {
            JSONObject obj = new JSONObject();
            obj.put("vid", 1);
            obj.put("udid", "112233");
            obj.put("lat", 1.345f);
            obj.put("lng", 103.567);
            String s = obj.toString();
            bytes = s.getBytes("UTF-8");
          }
          catch (JSONException e){System.out.println(e.toString());}
          catch(IOException e) {System.out.println(e.toString());}
    
          //* create UDP Socket
          try {
            addr = InetAddress.getByName("192.168.1.41");
            port = 16099;
            ds = new DatagramSocket();
          }
          catch(IOException e) {System.out.println(e.toString());}
    
          //* Sending UDP data by AsyncTask in a thread
          AsyncTask.execute(new Runnable(){
            @Override public void run(){
              try {
                DatagramPacket packet=new DatagramPacket(bytes,bytes.length,addr,port);
                ds.send(packet);
                Log.d("ExampleOut","sent 1");
              }
              catch(IOException e) {System.out.println(e.toString());}
            }
          });
    
          //* Or Sending UDP data by Thread
          Thread thread = new Thread(new Runnable(){
            @Override public void run() {
              try {
                DatagramPacket packet=new DatagramPacket(bytes,bytes.length,addr,port);
                ds.send(packet);
                Log.d("ExampleOut","sent 2");
              }
              catch (IOException e) {System.out.println(e.toString());}
            }
          });
          thread.start();
        }
    }