package com.sunvote.udptest; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.sunvote.util.ByteUtils; import java.net.DatagramPacket; import java.net.DatagramSocket; public class Main2Activity extends AppCompatActivity { public static int port = 40003; public static String ip ; private TextView display; private Button button; private int cou = 0 ; StringBuilder stringBuilder = new StringBuilder(); private String count ; private boolean isCrate = false; private Handler handler ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); display = (TextView) findViewById(R.id.display); button = (Button) findViewById(R.id.clean); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { stringBuilder = new StringBuilder(); cou = 0 ; display.setText("收到" + cou + "条消息\n"+ stringBuilder.toString()); } }); isCrate = true; handler = new Handler(); thread.start(); } @Override protected void onDestroy() { super.onDestroy(); isCrate = false; } private Thread thread = new Thread(){ @Override public void run() { super.run(); DatagramSocket localUDPSocket = LocalUDPSocketProvider.getInstance().getLocalUDPSocket(); while (isCrate){ if (localUDPSocket != null && !localUDPSocket.isClosed()) { try { byte[] data = new byte[1024]; DatagramPacket packet = new DatagramPacket(data, data.length); localUDPSocket.receive(packet); stringBuilder.append(ByteUtils.bytesToHexString(packet.getData(),packet.getLength())).append("\n"); cou ++ ; handler.post(new Runnable() { @Override public void run() { display.setText("收到" + cou + "条消息\n"+ stringBuilder.toString()); } }); }catch (Exception ex){ } } } } }; }