Я новичок в программировании на Java и Android, но есть проект, который требует от меня этого.
Приложение отправляет байты на сервер, который получает всю информацию, отправляемую ему, и выполняет эквивалентные команды.Клиент и сервер находятся в эксклюзивной ссылке, поэтому я не буду беспокоиться о проблемах безопасности.
public class NetworkTask extends AsyncTask<Void, byte[], Boolean> {
OutputStream dataOut; //Network Output Stream
@Override
protected void onPreExecute() {
Log.i("AsyncTask", "onPreExecute");
}
@Override
protected Boolean doInBackground(Void... params) {
boolean result = false;
while (sendData) { //While Boolean sendData is true
try {
gsocket = new Socket(roubotIP, roubotPort);
byte[] data = EncodingUtils.getAsciiBytes(outData);
Log.i("Data: ", outData);
dataOut = new DataOutputStream(gsocket.getOutputStream());
dataOut.write(data);
} catch (UnknownHostException e) {
Log.i("Socket: ","Unkown host");
e.printStackTrace();
result = true;
} catch (IOException e) {
e.printStackTrace();
result = true;
} catch (Exception e) {
e.printStackTrace();
result = true;
}
}
try {
dataOut.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
С помощью приведенного выше кода мне удалось установить соединение с сервером, но данные только отправляются / записываются наРазъем каждые 1-2 секунды.
Есть ли способ выполнять это постоянно?или с минимальной задержкой (около 0,5 секунды или меньше?)
Срок службы батареи для меня не проблема, и я согласен, что у активного разъема есть свои недостатки.
Спасибо.