Я делаю программу для насыщения ссылки для тестирования производительности в моей сетевой лаборатории, я пробовал разные вещи, от изменения буферов отправки и получения, создания файла и его чтения, создания длинного массива и отправки его через сокет до конца.сразу: OutputStream.write (byte [])
Массив имеет длину 1000000 позиций. Когда я снимаю сетевой трафик, согласно анализатору, пакеты имеют «Данные (1460 байт)», которые заставляют меня выбратьчто я не посылаю байт за байтом.
Используемая полоса пропускания составляет около 8% от 100 Мбит / с.
Я публикую соответствующий код, так как между клиентом и сервером есть какое-то взаимодействие, которое я используюНе думаю, что это уместно:
Клиент:
int car=0;
do {
car=is.read();
//System.out.println(car);
contador++;
} while(car!=104);
Server:
byte dades[]=new byte[1000000];
FileInputStream fis=null;
try {
FileOutputStream fos = new FileOutputStream("1MB.txt");
fos.write(dades);
fos=null;
File f = new File("1MB.txt");
fis = new FileInputStream(f);
step=0;
correcte=true;
sck = srvSock.accept();
sck.setSendBufferSize(65535);
sck.setReceiveBufferSize(65535);
os = sck.getOutputStream();
is = sck.getInputStream();
}
...
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(dades);
for(int i=0;i<100;i++) {
os.write(dades);
}
В этом случае я использовал последнюю идею: создать файл с массивом байтов на миллион позиций, а затем прочитал этот файл иЗаписать в сокет, до этой идеи я отправлял байтовый массив.
Еще одна вещь, которая заставляет меня поверить, что это не побайтовая передача, это то, что вВ компьютере с базовым ядром клиент использует 25% ЦП и использует около 8% пропускной способности, а на старом компьютере с одноядерным процессором (AMD Athlon) он использует 100% ЦП и всего 4% пропускной способности.Сервер не так сильно загружает процессор.
Есть идеи ???Я чувствую себя немного потерянным сейчас ...
Спасибо !!!