Listens on port 50003 and responds with "Hello from UDP Server"
import java.net.*;
import java.util.Date;
class UDPServer
{
private static final int PORT = 50004;
public static void main(String args[])
throws Exception
{
System.out.println("UDP Server Listening on port# " + PORT);
byte[] buffer = new byte[65536];
DatagramSocket serverSocket = new DatagramSocket(PORT);
DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
for (;;)
{
serverSocket.receive(receivePacket);
System.out.println((new Date().toString()) + ": " +"Received " + receivePacket.getLength() +
" bytes from " + receivePacket.getAddress() + ":" + receivePacket.getPort() + "...");
String value = new String(buffer, 0, receivePacket.getLength());
System.out.println(value);
receivePacket.setLength(buffer.length);
byte[] b = "Hello from UDP Server".getBytes();
DatagramPacket sendPacket = new DatagramPacket(b, b.length, receivePacket.getAddress(), receivePacket.getPort());
serverSocket.send(sendPacket);
System.out.println((new Date().toString()) + ": " +"Sent Response of " + b.length + "b to " +receivePacket.getAddress() + ":" + receivePacket.getPort());
}
}
}
Android UDP Client
Sends "Hello from Android" to server ip "192.168.202.107" on port 50003 and outputs response from server
String message = "Hello From Android!";
final int server_port = 50004;
final DatagramSocket s = new DatagramSocket();
final InetAddress local = InetAddress.getByName("192.168.202.107");
int msg_length = message.length();
byte[] messageBytes = message.getBytes();
DatagramPacket p = new DatagramPacket(messageBytes, msg_length, local, server_port);
s.send(p);
Log.d(TAG, "message sent");
messageBytes = new byte[1500];
p = new DatagramPacket(messageBytes, messageBytes.length);
s.receive(p);
msg_length = p.getLength();
message = new String(messageBytes, 0, msg_length);
final Toast toast = Toast.makeText(getApplicationContext(), message
+ " (" + msg_length + ")", Toast.LENGTH_LONG);
toast.show();
Log.d(TAG, "message received (" + msg_length + ") " + message);
//txtMessage.setText(message);
s.close();
UDP UDP Client
Just incase you need it..
Sends "Hello from UDP Client" to server ip "192.168.202.210" on port 50004 and outputs response from server
import java.net.*;
import java.util.Date;
class UDPClient
{
private static final int PORT = 50004;
private static final String HOST = "192.168.202.210";
public static void main(String args[])
throws Exception
{
System.out.println("UDP Client Sending to HOST:" + HOST + " on Port#:" + PORT);
DatagramSocket serverSocket = new DatagramSocket(50000);
byte[] b = "Hello from UDP Client".getBytes();
DatagramPacket sendPacket = new DatagramPacket(b, b.length, InetAddress.getByName(HOST), PORT);
serverSocket.send(sendPacket);
System.out.println((new Date().toString()) + ": " +"Sent Response... to " + HOST + ":" + PORT);
serverSocket.send(sendPacket);
}
}

3 comments:
Wonderful example code. Much appreciated.
Glad you found it useful!
will this work on an android emulator?
Post a Comment