diff options
author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-06 20:34:06 +0100 |
---|---|---|
committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-06 20:34:06 +0100 |
commit | 7b6d9a490cd07a6ffaf4b69df501a72c538621de (patch) | |
tree | b9a636da41f8e23d84a9ef93961758ea45268f3b /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java | |
parent | 4aaa6218b853873c632aba0ed8696f29640041d1 (diff) | |
parent | 2feff1aa41c41008fcda2dd60c718cf09deb3fa1 (diff) |
Merge branch 'master' into gossip-girl
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java')
-rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java new file mode 100644 index 0000000..82aaeb1 --- /dev/null +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPClient.java @@ -0,0 +1,47 @@ +package pl.edu.mimuw.cloudatlas.agent.modules; + +import pl.edu.mimuw.cloudatlas.agent.messages.UDUPMessage; + +import java.io.IOException; +import java.net.*; + +public class UDUPClient { + private UDUP udp; + private UDUPSerializer serializer; + private int serverPort; + private DatagramSocket socket; + private int bufsize; + + UDUPClient(UDUP udp, int serverPort, int bufferSize) throws SocketException { + this.udp = udp; + this.serverPort = serverPort; + this.socket = new DatagramSocket(); + this.bufsize = bufferSize; + this.serializer = new UDUPSerializer(); + } + + public void sendMessage(UDUPMessage msg) throws IOException { + int offset = 0; + int outputSize; + + byte[] buf = this.serializer.serialize(msg); + outputSize = buf.length; + + do { + outputSize =- bufsize; + offset += bufsize; + DatagramPacket packet = new DatagramPacket(buf, buf.length, msg.getContact().getAddress(), this.serverPort); + System.out.println("UDP sends message: "); + for (byte b : buf) { + System.out.print(b); + } + System.out.println("to " + packet.getAddress()); + this.socket.send(packet); + } while (outputSize > bufsize); + } + + void close() { + this.socket.close(); + } + +} |