Мое доказательство концепции простого гнезда между Android
и esp8266
работает только на 50%.Я отправляю одно сообщение от Android
до esp8266
, которое принимается нормально, но от esp8266 на android нет, и заканчивается наличием java.io.EOFException
на стороне андроида и Timeout
(как видно из кода ниже) для стороны esp8266,Я предоставляю соответствующую часть кода, чтобы быть кратким, при необходимости я опубликую все.
Android:
while (true) {
socket = serverSocket.accept();
dataInputStream = new DataInputStream(
socket.getInputStream());
dataOutputStream = new DataOutputStream(
socket.getOutputStream());
String msgReply = "Android server is alive!";
dataOutputStream.writeUTF(msgReply);
dataOutputStream.flush();
message = dataInputStream.readUTF();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
msg.setText(message);
}
});
}
ESP8266 сторона:
String cmd = "Hello from NodeMCU";
Serial.print("send to server: ");
Serial.println(cmd);
client.print(cmd);
client.flush();
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
while(client.available()){
String line = client.readStringUntil('!');
Serial.print(line);
}
Я пробовал все, что приходило мне в голову, переходил на написание char, используя client.write('h')
и т. Д., И ничего не работает.Пожалуйста, укажите мне какое-то рабочее направление.