Note In addition to adding Internet permissions, add two lines of code
Strictmode.setthreadpolicy (New StrictMode.ThreadPolicy.Builder (). Detectdiskreads (). Detectdiskwrites (). Detectnetwork (). Penaltylog (). build ());
Strictmode.setvmpolicy (New StrictMode.VmPolicy.Builder (). Detectleakedsqlliteobjects (). Detectleakedclosableobjects (). Penaltylog (). Penaltydeath (). build ());
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 Java.text.simpledateformat;import Java.util.date;import Java.util.uuid;import Android.annotation.SuppressLint; Import Android.os.bundle;import android.os.handler;import Android.os.message;import Android.os.strictmode;import Android.util.Log; @SuppressLint ("Newapi") Public classsocketudp {Thread mreceivethread; Datagramsocket serverreceive; Datagramsocket serversend; InetAddress Local=NULL; //Construction Method Publicsocketudp () {Try{strictmode.setthreadpolicy (NewStrictMode.ThreadPolicy.Builder (). Detectdiskreads (). Detectdiskwrites (). Detectnetwork (). Penaltylog (). Build ( )); Strictmode.setvmpolicy (NewStrictMode.VmPolicy.Builder (). Detectleakedsqlliteobjects (). Detectleakedclosableobjects (). Penaltylog (). Penaltydeath (). build ()); if(serverreceive!=NULL) {serverreceive.close (); Serverreceive=NULL; } serverreceive=NewDatagramsocket (NULL); Serverreceive.setreuseaddress (true); Serverreceive.setbroadcast (true); Serverreceive=NewDatagramsocket (5061); Mreceivethread=NewThread (Updatethread); Mreceivethread.start (); Local= Inetaddress.getbyname ("192.168.1.51"); //server.setreuseaddress (TRUE); }Catch(Exception e) {e.printstacktrace (); } } //Receive data processingFinal Handler Updatebarhandler =NewHandler () {@Override Public voidhandlemessage (Message msg) {SimpleDateFormat DF=NewSimpleDateFormat ("HH:mm:ss");//Set Date formatString Strdate=df.format (NewDate ()); String receivestring= (Msg.getdata ()). GetString ("Data"); Syslogactivity.addtolog (strdate+" "+receivestring); LOG.E ("Receive:"+strdate,receivestring); //Receive data processing } }; //A thread class that declares by using anonymous inner classesRunnable Updatethread =NewRunnable () { Public voidrun () {Try{ //get a Message object, the message class is provided by the Android systemMessage msg =NewMessage (); Bundle b=NewBundle (); //Defining Buffers byte[] buffer =New byte[1024x768]; //define receive packetsDatagrampacket packet =Newdatagrampacket (buffer, buffer.length); while(true) {msg=Updatebarhandler.obtainmessage (); //Receive Dataserverreceive.receive (packet); //determine if the data is received and then output the string if(Packet.getlength () >0) {String str=NewString (Buffer,0, packet. GetLength ()); B.putstring ("Data", str +"\ n"); Msg.setdata (b); //adding a Message object to the queue of messagesupdatebarhandler.sendmessage (msg); } } } Catch(Exception ex) {LOG.E ("socketudp", ex.tostring ()); } } }; Public voidSendbuffer (byte[] buffer) { Try{serversend=NewDatagramsocket (); Datagrampacket P=NewDatagrampacket (buffer, buffer.length, local,5060); Serversend.send (P); Serversend.close (); } Catch(IOException e) {e.printstacktrace (); } } Public voidCloseme () {serverreceive.close (); }}
socketudp
The UDP transmission of Android