Writing Packets - Valkryst/VUDP GitHub Wiki
In these examples, we make use of the Package
interface (that comes with VUDP) which supplies helper methods such as toBytes
, toPackage
, fromBytes
, and fromPackage
. These helper functions hide-away the code used to serialize an object, compress it with GZIP, and pack it into a DatagramPacket
.
With a PacketWriter
package com.valkryst.VUDP;
import lombok.Getter;
import lombok.NonNull;
import java.io.IOException;
import java.net.*;
public class Driver {
public static void main(String[] args) throws SocketException, UnknownHostException {
// Create a PacketWriter
final PacketWriter writer = new PacketWriter(new DatagramSocket());
writer.start();
// Continually Write Packets
final InetAddress serverAddress = InetAddress.getByName("server.com");
final int serverPort = 1234;
while (true) {
try {
final Message message = new Message("Test Message");
final DatagramPacket packet = message.toPacket();
packet.setAddress(serverAddress);
packet.setPort(serverPort);
writer.queuePacket(message.toPacket());
} catch (final InterruptedException e) {
// If interrupted while waiting to take a packet from the queue.
e.printStackTrace();
} catch (final IOException e) {
// If there's an issue packing the message into a packet.
e.printStackTrace();
}
}
}
private static class Message implements Package, Serializable {
/** The message. */
@Getter private final String message;
/**
* Constructs a new Message.
*
* @param message
* The message.
*/
public Message(final @NonNull String message) {
this.message = message;
}
}
}
With a PacketReadWriter
package com.valkryst.VUDP;
import lombok.Getter;
import lombok.NonNull;
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Driver {
public static void main(String[] args) throws SocketException, UnknownHostException {
// Create a PacketReadWriter
final String serverHost = "server.com";
final int serverPort = 1234;
final int clientPort = 1234;
final PacketReadWriter readWriter = new PacketReadWriter("server-hostname.com", serverPort, clientPort);
readWriter.start();
// Continually Write Packets
while (true) {
try {
final Message message = new Message("Test Message");
readWriter.queuePacket(message.toPacket());
} catch (final InterruptedException e) {
// If interrupted while waiting to take a packet from the queue.
e.printStackTrace();
} catch (final IOException e) {
// If there's an issue packing the message into a packet.
e.printStackTrace();
}
}
}
private static class Message implements Package, Serializable {
/** The message. */
@Getter private final String message;
/**
* Constructs a new Message.
*
* @param message
* The message.
*/
public Message(final @NonNull String message) {
this.message = message;
}
}
}