Note that there are some explanatory texts on larger screens.

plurals
  1. POUDP server running on android for LAN
    primarykey
    data
    text
    <p>i have server and clients running in the LAN,but my server don't accept more than one message from client app. in LAN, what code shall i put in while loop in order to accept as many messages as i send from client app ? My server class is:</p> <pre><code> public class MainActivity extends Activity { private Boolean shouldRestartSocketListen=true; TextView tv1; //MulticastLock lock; static String UDP_BROADCAST = "UDPBroadcast"; DatagramSocket socket; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv1=(TextView)findViewById(R.id.textView1); startListenForUDPBroadcast(); // lock.release(); } private void listenAndWaitAndThrowIntent(InetAddress broadcastIP, Integer port) throws Exception { byte[] recvBuf = new byte[15000]; if (socket == null || socket.isClosed()) { socket = new DatagramSocket(port, broadcastIP); //socket.setBroadcast(true); } //socket.setSoTimeout(1000); DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length); Log.e("UDP", "Waiting for UDP broadcast"); socket.receive(packet); String senderIP = packet.getAddress().getHostAddress(); String message = new String(packet.getData()).trim(); // Log.e("UDP", "Got UDB broadcast from " + senderIP + ", message: " + message); tv1.setText(message); // broadcastIntent(senderIP, message); socket.close(); } private void broadcastIntent(String senderIP, String message) { Intent intent = new Intent(MainActivity.UDP_BROADCAST); intent.putExtra("sender", senderIP); intent.putExtra("message", message); sendBroadcast(intent); } Thread UDPBroadcastThread; void startListenForUDPBroadcast() { UDPBroadcastThread = new Thread(new Runnable() { public void run() { try { InetAddress broadcastIP = InetAddress.getByName("192.168.1.255"); //172.16.238.42 //192.168.1.255 Integer port = 11111; while (shouldRestartSocketListen) { listenAndWaitAndThrowIntent(broadcastIP, port); } //if (!shouldListenForUDPBroadcast) throw new ThreadDeath(); } catch (Exception e) { Log.i("UDP", "no longer listening for UDP broadcasts cause of error " + e.getMessage()); } } }); UDPBroadcastThread.start(); } void stopListen() { shouldRestartSocketListen = false; socket.close(); } public void onCreate() { }; @Override public void onDestroy() { stopListen(); } public IBinder onBind(Intent intent) { return null; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload