Contoh Datagram UDP Listener di Android
Oleh Afa HernandesDiperbarui 4 menit baca

UDP dapat digunakan untuk mengirim informasi yang lebih mengutamakan kecepatan dibandingkan kehandalan. Dengan pemanfaatan UDP yang tepat, proses interaksi data informasi dapat berjalan dengan lebih cepat meskipun agak kurang akurat.
Walau demikian, melalui penggunaan UDP (User Data Protocol) , perangkat pengirim dan perangkat penerima pesan tidak perlu lagi melakukan validasi saat melakukan pertukaran data,. Sebab data yang saling ditransferkan tersebut telah sesuai settingan UDP.
berikut adalah penerapan UDP Datagram menggunakan android studio :
Contoh UDP 1
package com.example.appmonitoring;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import android.os.Debug;import android.os.StrictMode;import android.util.Log;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;
public class MainActivity extends AppCompatActivity {
private static final int UDP_SERVER_PORT = 2004; private static final int MAX_UDP_DATAGRAM_LEN = 1500; private TextView textMessage;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loading);
textMessage = (TextView) findViewById(R.id.txt1); runUdpServer(); }
private void runUdpServer() { new Thread(new Runnable() { public void run() { String lText; try { int port = 11000;
DatagramSocket dsocket = new DatagramSocket(port); byte[] buffer = new byte[2048]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (true) {
dsocket.receive(packet); lText = new String(buffer, 0, packet.getLength()); Log.i("UDP packet received", lText); textMessage.setText(lText);
packet.setLength(buffer.length); } } catch (Exception e) { System.err.println(e); e.printStackTrace(); } } }).start(); }}Contoh UDP 2
package proyek.Ab;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;import android.app.AlertDialog;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.TextView;
import java.net.DatagramPacket;import java.net.DatagramSocket;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Color;import android.graphics.Matrix;import android.app.AlertDialog;public class Menuutama extends AppCompatActivity { TextView lblp1,lblp2,lblp3,lblp4,lblp5,lblp6,lblpompa,lblratarata;
private static final int UDP_SERVER_PORT = 8888; private static final int MAX_UDP_DATAGRAM_LEN = 1500; DatagramSocket socket;TextView lblStatus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_utama); lblStatus=(TextView)findViewById(R.id.lblStatus);
lblp1=(TextView)findViewById(R.id.lblP1); lblp2=(TextView)findViewById(R.id.lblP2); lblp3=(TextView)findViewById(R.id.lblP3); lblp4=(TextView)findViewById(R.id.lblP4); lblp5=(TextView)findViewById(R.id.lblP5); lblp6=(TextView)findViewById(R.id.lblP6); lblpompa=(TextView)findViewById(R.id.lblpompa); lblratarata=(TextView)findViewById(R.id.lblratarata);
}
private MyDatagramReceiver myDatagramReceiver = null; @Override protected void onResume() { super.onResume(); myDatagramReceiver = new MyDatagramReceiver(); myDatagramReceiver.start(); }
protected void onPause() { super.onPause(); myDatagramReceiver.kill(); }
private class MyDatagramReceiver extends Thread { private boolean bKeepRunning = true; private String lastMessage = "";
public void run() { String message; byte[] lmessage = new byte[MAX_UDP_DATAGRAM_LEN]; DatagramPacket packet = new DatagramPacket(lmessage, lmessage.length);
try { socket = new DatagramSocket(UDP_SERVER_PORT); while(bKeepRunning) { socket.receive(packet); message = new String(lmessage, 0, packet.getLength()); lastMessage = message; runOnUiThread(updateTextMessage); } } catch (Throwable e) { e.printStackTrace(); }
if (socket != null) { socket.close(); } }
public void kill() { bKeepRunning = false; }
public String getLastMessage() { return lastMessage; } }
private Runnable updateTextMessage = new Runnable() { public void run() { if (myDatagramReceiver == null) return;
String mydata=myDatagramReceiver.getLastMessage();
//lblStatus.setText(mydata); String[]ar=mydata.split("#");//# int jd=ar.length;
//31.57// #15.54// #9.29// #1.56// #6.65// #20// #ON// #25.00// #3750// # // 31.57#15.54#9.29#1.56#6.65#20#ON#25.00#3750#
// String info = String(sensor1) + "#" + String(sensor2) + "#" + String(sensor3) + "#" + String(sensor4) + "#" + // String(sensor5) + "#" + // String(t) + "#" + String(statusPompa) + "#" + String(rata) + "#"+ String(durasi)+ "#"; if(jd>=8){ Log.d("mydata",mydata); String klb1=ar[0]; String klb2=ar[1]; String klb3=ar[2]; String klb4=ar[3]; String klb5=ar[4];
String suhu=ar[5]; String pompa=ar[6];
String rata=ar[7]; String durasi=ar[8];
double K1=Konver(klb1); double K2=Konver(klb2); double K3=Konver(klb3); double K4=Konver(klb4); double K5=Konver(klb5); double avg=(K1+K2+K3+K4+K5)/5; String s_avg=String.valueOf(Math.round(avg));
lblp1.setText(klb1+"%"); lblp2.setText(klb2+"%"); lblp3.setText(klb3+"%"); lblp4.setText(klb4+"%"); lblp5.setText(klb5+"%"); lblp6.setText(suhu+" \u2103"); lblpompa.setText(durasi); if(rata.length()>3){ rata=rata.substring(0,3);//4 } lblratarata.setText(rata+"%");//80#92#83#88#79#34.7#ON
} } };
double Konver(String input){ double out=0; try{ out=Double.parseDouble(input); } catch (Exception ee){} return out;}}Ngga ada noda ngga belajar


