Establish a UDP Client - nsiatras/extasys GitHub Wiki
The following class is a ready to run UDP Client. For better understanding take a look at Extasys Examples
import Extasys.Encryption.Base64Encryptor;
import Extasys.Network.UDP.Client.Connectors.UDPConnector;
import java.net.DatagramPacket;
import java.net.InetAddress;
/**
*
* @author Nikos Siatras
*/
public class UDPClient extends Extasys.Network.UDP.Client.ExtasysUDPClient
{
private AutoSendMessages fAutoSendMessagesThread;
public UDPClient(String name, String description, int readTimeOut, int corePoolSize, int maximumPoolSize, InetAddress remoteHostIP, int remoteHostPort)
{
super(name, description, corePoolSize, maximumPoolSize);
// Add a UDP connector to this UDP client.
// You can add more than one connectors if you need to.
UDPConnector conn = super.AddConnector("My connector", 10240, 10000, remoteHostIP, remoteHostPort);
// Uncomment the following line to set Encryption for this UDPConnector
//conn.setConnectionEncryptor(new Base64Encryptor());
}
@Override
public void OnDataReceive(UDPConnector connector, DatagramPacket packet)
{
System.out.println("Data received: " + new String(packet.getData()));
}
public void StartSendingMessages()
{
StopSendingMessages();
fAutoSendMessagesThread = new AutoSendMessages(this);
fAutoSendMessagesThread.start();
}
public void StopSendingMessages()
{
if (fAutoSendMessagesThread != null)
{
fAutoSendMessagesThread.Dispose();
fAutoSendMessagesThread.interrupt();
}
}
}
class AutoSendMessages extends Thread
{
private final UDPClient fMyClient;
private boolean fActive = true;
public AutoSendMessages(UDPClient client)
{
fMyClient = client;
}
@Override
public void run()
{
int messageCount = 0;
while (fActive)
{
try
{
messageCount++;
String msgToSend = String.valueOf(messageCount);
fMyClient.SendData(msgToSend.getBytes());
Thread.sleep(300);
}
catch (Exception ex)
{
Dispose();
fMyClient.StopSendingMessages();
}
}
}
public void Dispose()
{
fActive = false;
}
}