Я подключаю Esp32 к моему телефону с Android через Wi-Fi, то есть esp работает как сервер точки доступа.Попытка отправить строку для чтения ESP.Вот ссылка на код esp в Arduino IDE:
Wifi_AP_server
Здесь много полезной информации о java-сокетах, но ни один из потоков не работает со мной иЯ действительно не могу обернуть голову вокруг них в этом простом случае, чтобы придумать мою реализацию !!Я пишу этот Java-код в MainActivity.java внутри AsyncTask, и он является частью MethodChannel, который вызывается flutter.
Socket socket = null;
DataOutputStream outputStream = null;
socket = new Socket("192.168.4.1", 80);
outputStream = new DataOutputStream (socket.getOutputStream());
outputStream.writeUTF("Hello\n");
socket.close();
Обратите внимание, что это сбой, потому что иногда он успешно отправляет два символа или один, в большинстве случаев он просто подключается и отключается с esp без отправки какого-либо символа.Я перепробовал все, что мог, пробуя разные потоки, читая буфер сообщений с esp на телефон и записывая обратно в этот буфер, как если бы это был эхо-сервер, который работал хорошо, но это нежелательный сценарий !!
Я решил задать этот вопрос здесь после того, как написал этот фрагмент кода Python, который убедил меня в том, что код Wifi_AP_server.ino esp работает правильно.
import socket
HOST = '192.168.4.1' # The server's hostname or IP address
PORT = 80 # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world\n')
data = s.recv(1024)
print('Received', repr(data))
Вы можете попробовать это по ссылке, и вы увидите, что она работает правильно.Поэтому, пожалуйста, помогите мне, как мне сделать это с помощью Java на Android?