Мое приложение использует сокеты и потоки для отправки данных в режиме реального времени, которые поступают к клиентам, которые подключаются к нему. Для этого следующие шаги:Оптимизация производительности в сокетах java
- Подключение к серверу данных, а затем ждет клиентов
- Launch нить обсудить входящие данные, форматировать их и отправить их клиентам, если таковые имеются.
- Когда клиент подключается, он открывает для него поток, через который будут отправляться данные.
- Наконец, используйте другой поток, чтобы проверить, что вы получаете и отправляете данные, иначе он будет подключен к источнику.
Данные, полученные от источника, хранятся в массиве, ожидающем обработки потоком. В каждом потоке клиента полученные данные также сохраняются в массиве, который нужно отправить. Целью этого является отсутствие замятий при получении или отправке данных. данные задерживаются на 10 секунд или более для достижения клиентов
Что я могу сделать для оптимизации производительности? Это работает на сервере Windows, можете ли вы рекомендовать какой-либо профилировщик?
Большое спасибо за помощь.
EDIT: Данные представляют собой строки переменной длины. Часть кода: // создать сокет источника в класс реализует Runnable, а затем клиент ожидает
Socket entrada = new Socket(servidor,Integer.parseInt(puerto));
InputStream sIn = entrada.getInputStream();
while (!error) {
try {
s = salida.accept();
clientes.add(new ClientThread(s));
// run
while (((c = sIn.read()) != -1) && ((clientes.size() > 0))) {
if (c != 13 && c != 10) {
cad += (char) c;
}
if (c == 13) received[i] = cad
// In SendThread, run
// format received[i] and send result
for (i=0; i < clientes.size(); i++) {
clientes.get(i).SendData(result);
}
// In ClientThread:
OutputString s1out = socket.getOutputStream();
// SendData
sending[i] = result;
// run
if cad forsending
for (int j = 0;j<res.length();j++){
try {
s1out.write((int)res.charAt(j));
} catch (Exception e) {
}
}
Спасибо.
На самом деле, только 1 клиент подключен. В будущем их 10. Спасибо. – user1424139
С небольшим количеством данных работает, но при отправке всех данных возникают задержки. Благодарю. – user1424139
Вам нужно будет опубликовать код. Из вашего описания система должна работать оптимально. Ваш код может вводить узкие места. – EJP