X-Git-Url: http://www.average.org/gitweb/?p=UdpRespond.git;a=blobdiff_plain;f=src%2Fcom%2Fexample%2Fudpresponder%2FUdpRespondActivity.java;h=30da0b4c66fb0bb479fe59d6f8e9ff9ce26c2b90;hp=7ef9709749f9909b2b3d7be5bf2ae562f7c5b0a1;hb=HEAD;hpb=4c6fc633f2d4d0cd0d4d80ebc7e71f826003f361 diff --git a/src/com/example/udpresponder/UdpRespondActivity.java b/src/com/example/udpresponder/UdpRespondActivity.java index 7ef9709..30da0b4 100644 --- a/src/com/example/udpresponder/UdpRespondActivity.java +++ b/src/com/example/udpresponder/UdpRespondActivity.java @@ -1,35 +1,44 @@ package com.example.udpresponder; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.DatagramPacket; +import java.net.DatagramSocket; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.widget.TextView; +import android.widget.EditText; import android.widget.Button; import android.view.View; import android.view.View.OnClickListener; public class UdpRespondActivity extends Activity { + private TextView tv; + private EditText et; + private Handler mHandler = new Handler() { public void handleMessage(Message msg) { Bundle bdl = msg.getData(); - updateUI(bdl.getString("ln")); + tv.append(bdl.getString("ln")); } }; - private TextView tv; - private OnClickListener mStartListener = new OnClickListener() { public void onClick(View v) { - tv.append("Start pressed\n"); + CharSequence cs = et.getText(); + tv.append("Start pressed, data: " + + cs.toString() + + " (unimplemented)\n"); } }; private OnClickListener mStopListener = new OnClickListener() { public void onClick(View v) { - tv.append("Stop pressed\n"); + tv.append("Stop pressed, exiting\n"); finish(); } }; @@ -40,6 +49,7 @@ public class UdpRespondActivity extends Activity { setContentView(R.layout.main); tv = (TextView)findViewById(R.id.tv); tv.append(" Starting\n"); + et = (EditText)findViewById(R.id.text_entry); Button btn_start = (Button)findViewById(R.id.btn_start); btn_start.setOnClickListener(mStartListener); Button btn_stop = (Button)findViewById(R.id.btn_stop); @@ -47,23 +57,56 @@ public class UdpRespondActivity extends Activity { startBgThread(); } - private void updateUI(String str) { - tv.append(str); + private void println(String str) { + Bundle bdl = new Bundle(); + bdl.putString("ln", str + "\n"); + Message msg = Message.obtain(mHandler); + msg.setData(bdl); + msg.sendToTarget(); } protected void startBgThread () { Thread t = new Thread() { public void run() { - while (true) { - SystemClock.sleep(3000); - Bundle bdl = new Bundle(); - bdl.putString("ln", "this is msg\n"); - Message msg = Message.obtain(mHandler); - msg.setData(bdl); - msg.sendToTarget(); - } + bgTask(); } }; t.start(); } + + private void bgTask() { + DatagramSocket s = null; + try { + s = new DatagramSocket(9999); + } catch (java.net.SocketException e) { + println("socket: " + e); + return; + } +// InetSocketAddress sa = new InetSocketAddress(9999); +// try { +// s.bind(sa); +// } catch (IllegalArgumentException e) { +// println("bind: " + e); +// return; +// } catch (java.net.SocketException e) { +// println("bind: " + e); +// return; +// } + println("Bound to port " + s.getLocalPort()); + while (true) { + byte[] data = new byte[256]; + DatagramPacket pkt = new DatagramPacket(data, 256); + try { + s.receive(pkt); + } catch (java.io.IOException e) { + println("receive: " + e); + } + InetAddress ia = pkt.getAddress(); + int ip = pkt.getPort(); + byte[] id = pkt.getData(); + println(ia.toString() + ":" + + ip + " " + + id.toString()); + } + } }