2009-05-19 3 views
0

Как читать очень большие данные с помощью DataInputStream сокета Если данные находятся в формате String и имеют длину более 1 000 000 символов.Как читать огромные данные в сокете, а также записывать в socketchannel

Также как написать, что большие данные, используя SocketChannel в java?

+1

Дипак, пожалуйста, задайте ваши вопросы более конкретно. что ты уже испробовал? Если вы написали код, что не так и т. Д.? –

+0

Если я использую read() для больших данных. Тогда пусть длина данных на самом деле составляет 100000 символов. Мой метод чтения может читать до maxm 40000 байт в это время byte [] b = новый байт [100000] DataInputStream.read (b); System.out.println (новая строка (b)); – Deepak

ответ

1

Проблема в том, что ваши данные поступают в куски. Либо размер пакета ограничивает, либо DataInputStream имеет внутренний буфер всего 40k. Я не знаю, но это не имеет значения. В любом случае, все 1000000 байт не будут поступать сразу. Поэтому вы должны переписать свою программу, чтобы этого ожидать. Вам нужно прочитать меньшие куски, которые вы получите, и сохранить их в другой байт [1000000] переменной (отслеживая, где находится ваш последний индекс байта). Продолжайте цикл, пока не закончите чтение сокета. Затем вы можете работать со своей внутренней переменной.

+0

Hi Chris, Есть некоторая ситуация, когда я получаю свои прочитанные данные 0, хотя все данные еще не получены. Итак, как преодолеть эту проблему. Можете привести несколько примеров. – Deepak