Я работаю над сокетами на Java. Дело в том, что мы получаем сигнал от аппаратного устройства, и если устройство не сканируется после определенного интервала (200 мс), зависает. Поэтому мне нужно ускорить эту операцию. Как использовать многозадачность для ускорения следующего кода.Многопоточность с использованием сокета TCP/IP
нет строк здесь нет, как правило, в диапазоне от 250
sock = new Socket("localhost", def.PORT);
OutputStream outStream = sock.getOutputStream();
DataOutputStream outDataStream = new DataOutputStream(outStream);
/**************** Start Command for CystometryEMG *****************/
outDataStream.writeInt(size);
outDataStream.writeInt(command);
outDataStream.writeBytes(msg);
InputStream input = new BufferedInputStream(sock.getInputStream());
reader = new DataInputStream(input);
sock.setSoTimeout(def.SOCKET_READ_TIME_OUT);
if (sock.isClosed())
return;
size = reader.readInt();
command = reader.readInt();
errorCode = reader.readInt();
NoofCols = reader.readInt();
NoOfRows = reader.readInt();
/************** Now get the input from the device *************/
for (int i = 0; i < NoOfRows; i++)
arrPb[i] = reader.readDouble();
for (int i = 0; i < NoOfRows; i++)
arrPv[i] = reader.readDouble();
for (int i = 0; i < NoOfRows; i++)
arrV[i] = reader.readDouble();
for (int i = 0; i < NoOfRows; i++)
arrVn[i] = reader.readDouble();
sock.close();
невозможно для 'sock.isClosed()', чтобы быть правдой сразу после вызова 'socket.setSoTimeout()' в той же области «try». Не тратьте время на бессмысленные тесты. – EJP
Hang on .. no loop! Вы постоянно открываете и закрываете сокет? –
@MartinJames У меня не возникло твоего вопроса. Я открываю сокет для каждой операции чтения, а затем закрываю его после завершения операции. Если я держу гнездо открытым, операция чтения не работает. – Chaitannya