Как отправить гига данных через сокет Java? - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь отправить байтовый массив размером в гигабайт через сокет Java моему клиенту в C #, но около 580 тыс. Записей в моих данных потеряно.Я устанавливаю каждую запись в моем массиве на 10, но в определенный момент они становятся 0.

Мой код Java:

OutputStream outputStream = objSocket.getOutputStream();

byte[] dataBytesLength = new byte[4];
int toSendLen = dataBytes.length;

dataBytesLength[0] = (byte)(toSendLen & 0xff);
dataBytesLength[1] = (byte)((toSendLen >> 8) & 0xff);
dataBytesLength[2] = (byte)((toSendLen >> 16) & 0xff);
dataBytesLength[3] = (byte)((toSendLen >> 24) & 0xff);

outputStream.write(dataBytesLength);
outputStream.write(dataBytes);

Мой код C #:

byte[] receivedLengthBytes = new byte[4];
Socket.Receive(receivedLengthBytes);

int receivedLength = BitConverter.ToInt32(receivedLengthBytes, 0);

byte[] receivedBytes = new byte[receivedLength];
Socket.Receive(receivedBytes);

Если я перебираю массив полученных байтов, все после 589824 равно 0. ЯЯ не уверен, почему происходит такая потеря данных, и, к сожалению, разделить ее на множество фрагментов по 500 тыс. не удастся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...