Mam dziwny problem wysyłam dane po tcp/ip ale odbiorca otrzymuje więcej niż wysłałem. Czy tcp/ip coś dokleja do danych? (wysyłam tylko jedna paczkę byte'ów).
Wysyłka to zwykły Socket, natomiast odbiór jest AsynchronousSocketChannel.
Wysyłanie (pierw wysyłam rozmiar jako int, potem po zatwierdzeniu przez klienta wysyłam dane jak niżej):
public void send(byte[] data) {
try {
outputStream.write(data);
} catch (IOException ex) {
ex.printStackTrace();
}
}
ODBIÓR (odczytuje po jednym bajcie):
ByteBuffer sizeBuffer = ByteBuffer.allocate(Integer.BYTES);
clientConnection.read(sizeBuffer).get(15, TimeUnit.SECONDS);
sizeBuffer.flip();
int sizeOfData = sizeBuffer.getInt();
sizeBuffer.clear();
sendConfirmation();
ByteBuffer dataBuffer = ByteBuffer.allocate(sizeOfData);
int byteCounter = 0;
while (byteCounter < sizeOfData) {
ByteBuffer temporaryDataBuffer = ByteBuffer.allocate(1);
clientConnection.read(temporaryDataBuffer).get(15, TimeUnit.SECONDS);
temporaryDataBuffer.flip();
dataBuffer.put(temporaryDataBuffer.array());
byteCounter++;
}