У меня ESP8266 12F в режиме Soft AP (сервер), и я пытаюсь подключить к нему мое Android приложение в постоянном режиме (TCP).
Я пытаюсь использовать этот код и могу отправить данные, но не получают ответ, и я знаю, что ответ отправляется, потому что я перехватываю соединение ESP8266.
Цель состоит в том, чтобы установить соединение клиента TCP с ESP8266 и отправлять ему пакеты в зависимости от того, что в приложении нажата кнопка, и устройство IoT может быть занятым, чтобы ответить, поэтому я не могу дождаться остановки графического интерфейса приложения; вот почему мне нужно постоянное соединение.
Я пробовал разные подходы без успеха.
package com.coolio.tcptest;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.net.*;
import java.io.*;
public class ClientActivity extends AppCompatActivity {
Socket myClient = new Socket();
Boolean Connected = false;
String serverName;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_client);
}
public class client extends AsyncTask<Void,Void,Void>
{
String received;
protected Void doInBackground(Void... Params)
{
//String serverName = "10.7.48.108";
int port = 1100;
try {
//updateText.setText("Connecting to " + serverName + " on port " + port);
// Socket client = new Socket(serverName, port);
if(!Connected)
{
//myClient.addListener();
myClient = new Socket(serverName, port);
myClient.setTcpNoDelay(true);
//myClient.on("new message", onNewMessage);
Connected=true;
}
//updateText.setText("Just connected to " + client.getRemoteSocketAddress());
OutputStream outToServer = myClient.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
InputStream inFromServer = myClient.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
out.writeBytes("Connected!\r\n");
received = in.readUTF();//Stuck here
myClient.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void aVoid)
{
//Never reach here
TextView updateText = (TextView) findViewById(R.id.update);
updateText.setText("in post");
TextView receivedText = (TextView) findViewById(R.id.received);
receivedText.setText("Server says: " + received);
}
}
public void onSendClicked(View view)
{
//EditText messageView= (EditText) findViewById(R.id.ip);
//serverName=messageView.getText().toString();
serverName="192.168.4.1";
new client().execute();
}
}