This article implements how to receive UDP broadcasts from a PC on your mobile phone.
Let's first complete the code implementation on the PC side., which is very simple.
private final ScheduledExecutorService askService= Executors.newSingleThreadScheduledExecutor();
public void runWaitConnectThead(){ askService.scheduleAtFixedRate(this::sendAskMessage, 0, boardCastConfig.getWAIT_MS(), TimeUnit.MILLISECONDS); } protected void sendAskMessage(){ byte[] message = this.hostName.getBytes(); try (DatagramSocket datagramSocket = new DatagramSocket()) { datagramSocket.setBroadcast(true); InetAddress boardcastAddr = InetAddress.getByName("255.255.255.255"); DatagramPacket datagramPacket = new DatagramPacket(message, message.length, boardcastAddr, 1885); datagramSocket.send(datagramPacket); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } }
In the second code block above, askService will start immediatly(the second param) and will continue to exucute function "sendAskMessage()", which boardcast UDP packet, every boardCastConfig.getWAIT_MS() milliseconds. In my code, it repeats every 5s.
Now, you have achieved 50% success.
Before writing our receiving code, we need add some permissions in AndroidMnifest.xml file or your application will not able to run.
Here are the permissions:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"></uses-permission>
Then let's create a service in MainActivity, and implement our receiving code in it. By the way, don't forget adding this service in AndroidManifest.xml file.
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent waitBoardCastService=new Intent(this, WaitBoardCastService.class); startService(waitBoardCastService); } }
<service android:name=".on_wait.WaitBoardCastService"></service>
Then we can finish our receiving code. It contains two part.
①create a new thread(I didn't show that in my code, but that's very important, you can't start your application if you left network operation in main thread)
②acquiring multicast lock(this step is extremely important, without this, you can't receive UDP packet)
③receiving UDP packet
WifiManager wifi =(WifiManager)getSystemService(MyApplication.WIFI_SERVICE); WifiManager.MulticastLock lock = wifi.createMulticastLock("any_tag"); lock.acquire(); try { DatagramSocket socket = new DatagramSocket(1885); byte[] receiveData = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); Log.v("hello","waiting"); socket.receive(receivePacket); String receiveMessage = new String(receivePacket.getData(), 0,receivePacket.getLength()); Log.v("hello","received!"); socket.close(); } catch (IOException e) { Toast.makeText(MyApplication.getContext(), "NetWork Error",Toast.LENGTH_LONG).show(); } finally { lock.release(); }
My results:
The above is the detailed content of Receive UDP Broadcast from PC on Android. For more information, please follow other related articles on the PHP Chinese website!

Javadevelopmentisnotentirelyplatform-independentduetoseveralfactors.1)JVMvariationsaffectperformanceandbehavioracrossdifferentOS.2)NativelibrariesviaJNIintroduceplatform-specificissues.3)Filepathsandsystempropertiesdifferbetweenplatforms.4)GUIapplica

Java code will have performance differences when running on different platforms. 1) The implementation and optimization strategies of JVM are different, such as OracleJDK and OpenJDK. 2) The characteristics of the operating system, such as memory management and thread scheduling, will also affect performance. 3) Performance can be improved by selecting the appropriate JVM, adjusting JVM parameters and code optimization.

Java'splatformindependencehaslimitationsincludingperformanceoverhead,versioncompatibilityissues,challengeswithnativelibraryintegration,platform-specificfeatures,andJVMinstallation/maintenance.Thesefactorscomplicatethe"writeonce,runanywhere"

Platformindependenceallowsprogramstorunonanyplatformwithoutmodification,whilecross-platformdevelopmentrequiressomeplatform-specificadjustments.Platformindependence,exemplifiedbyJava,enablesuniversalexecutionbutmaycompromiseperformance.Cross-platformd

JITcompilationinJavaenhancesperformancewhilemaintainingplatformindependence.1)Itdynamicallytranslatesbytecodeintonativemachinecodeatruntime,optimizingfrequentlyusedcode.2)TheJVMremainsplatform-independent,allowingthesameJavaapplicationtorunondifferen

Javaispopularforcross-platformdesktopapplicationsduetoits"WriteOnce,RunAnywhere"philosophy.1)ItusesbytecodethatrunsonanyJVM-equippedplatform.2)LibrarieslikeSwingandJavaFXhelpcreatenative-lookingUIs.3)Itsextensivestandardlibrarysupportscompr

Reasons for writing platform-specific code in Java include access to specific operating system features, interacting with specific hardware, and optimizing performance. 1) Use JNA or JNI to access the Windows registry; 2) Interact with Linux-specific hardware drivers through JNI; 3) Use Metal to optimize gaming performance on macOS through JNI. Nevertheless, writing platform-specific code can affect the portability of the code, increase complexity, and potentially pose performance overhead and security risks.

Java will further enhance platform independence through cloud-native applications, multi-platform deployment and cross-language interoperability. 1) Cloud native applications will use GraalVM and Quarkus to increase startup speed. 2) Java will be extended to embedded devices, mobile devices and quantum computers. 3) Through GraalVM, Java will seamlessly integrate with languages such as Python and JavaScript to enhance cross-language interoperability.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

SublimeText3 Chinese version
Chinese version, very easy to use

Notepad++7.3.1
Easy-to-use and free code editor
