package com.esotericsoftware.kryonet; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import com.esotericsoftware.kryonet.util.InputStreamSender; public class InputStreamSenderTest extends KryoNetTestCase { boolean success; public void testStream () throws IOException { final int largeDataSize = 12345; final Server server = new Server(16384, 8192); server.getKryo().setRegistrationRequired(false); startEndPoint(server); server.bind(tcpPort, udpPort); server.addListener(new Listener() { public void connected (Connection connection) { ByteArrayOutputStream output = new ByteArrayOutputStream(largeDataSize); for (int i = 0; i < largeDataSize; i++) output.write(i); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); // Send data in 512 byte chunks. connection.addListener(new InputStreamSender(input, 512) { protected void start () { // Normally would send an object so the receiving side knows how to handle the chunks we are about to send. System.out.println("starting"); } protected Object next (byte[] bytes) { System.out.println("sending " + bytes.length); return bytes; // Normally would wrap the byte[] with an object so the receiving side knows how to handle it. } }); } }); // ---- final Client client = new Client(16384, 8192); client.getKryo().setRegistrationRequired(false); startEndPoint(client); client.addListener(new Listener() { int total; public void received (Connection connection, Object object) { if (object instanceof byte[]) { int length = ((byte[])object).length; System.out.println("received " + length); total += length; if (total == largeDataSize) { success = true; stopEndPoints(); } } } }); client.connect(5000, host, tcpPort, udpPort); waitForThreads(5000); if (!success) fail(); } }