ESP32 Wifiserver 和 Android Appp

ESP32 Wifiserver and Android Appp

所以我得到了我的 ESP32 并想做一些项目,我想用 Android 应用程序控制它们,例如 LED 条纹。我已经用我的 Raspberry Pi 做到了,它运行得很好。 我已经尝试了一些代码,它可以连接到 Wifi。我的 PC 甚至 Raspberry Pi 都可以连接到它,但是当我尝试使用我的智能手机时,我就是没有用。 这是我的 Android 代码: mainActivity.jre

connectButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!IPAddress.getText().equals("") || IPAddress.getText() != null || !portNumber.getText().equals("") || portNumber.getText() != null){
                    return;
                }

                IPaddresse= IPAddress.getText().toString();
                port=Integer.parseInt(portNumber.getText().toString());

                try {
                    client = new Socket(IPaddresse,port);
                    pw = new PrintWriter(client.getOutputStream());
                    dataOutputStream= new DataOutputStream(client.getOutputStream());
                    msg.setText("Verbunden!");
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

ESP32代码:

#include <WiFi.h>

const char* ssid="Name";
const char* password="password";

WiFiServer server(80  );

void setup() {
  Serial.begin(115200);
  Serial.println("start");
  
  delay(1000);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
 
  Serial.println("Connected to the WiFi network");
  Serial.println(WiFi.localIP());
 
  server.begin();
}

void loop() {
  WiFiClient client = server.available();
 
  if (client) {
 
    while (client.connected()) {
 
      while (client.available()>0) {
        char c = client.read();
        client.write(c);
      }

      Serial.println(client.localIP());
      delay(10);
    }
  }
  
}

对不起我的英语。我的代码并不是最好的,我刚开始编写代码 谢谢

首先,在 ESP32 上,我建议您将 mDNS 添加到您的设置中,这样您就可以在网络上为您的 esp 命名,就像您为 esp 命名一样 pietje 那么您可以在您的网络上以 pietje.local 的形式找到它。
这似乎无法与套接字 class 一起正常工作,但也许我做了一些工作。它没有找到它的IP。这是第一次使用套接字。所以我学到了一些新东西。

我试过你的例子,但确实是我的错。通过一些简短的搜索,我找到了这个网站: https://www.tutorialspoint.com/sending-and-receiving-data-with-sockets-in-android
通过在线程中添加套接字创建,它确实对我有用。

希望对你有所帮助。