我有一个连接到Arduino服务器的Android应用程序,并在按下按钮时发送套接字,但是只要按下按钮它会等待一段时间然后抛出“连接超时”。我知道Arduino的作品;我在浏览器上试了一下它很好。为什么我的应用程序无法访问它?
Android代码:
Button.OnClickListener buttonConnectOnClickListener = new Button.OnClickListener() {
public void onClick(View v) {
Log.i(Tag,"connecting to Server");
try {
Log.i(Tag,"Enters try");
socket = new Socket("161.53.168.112", 8888);
Log.i(Tag,"stvorio socket");
dataOutputStream = new DataOutputStream(socket.getOutputStream());//and stream
Log.i(Tag,"Writing 1 on socket.");
dataOutputStream.writeBytes("1");
}
catch (UnknownHostException e) {
Log.i(Tag,e.toString());
}
catch (IOException e) {
Log.i(Tag,e.toString());
}
catch (Exception e) {
Log.e(Tag, e.toString());
这是Arduino中使用的代码。这很简单,所以我无法理解出了什么问题。我使用了很多日志,因为我想知道错误在哪里。我使用我的Arduino作为服务器并在其上发布内容。如果我在网络浏览器中输入161.53.168.112:8888,它会找到它并可以发送请求,但我的Android手机什么都没有,即使使用浏览器,也不是应用程序。我无法访问我的服务器。 AM我可能在服务器或Android上缺少一些权限吗?
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x36, 0xFF };
byte ip[] = { 161, 53, 168, 114 };
int serverPort = 8888;
#define kitchenLight = 9;
Server server(serverPort);
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(kitchenLight,OUTPUT);
server.begin();
}
void loop()
{
Client client = server.available();
if(client)
{
while(client.connected()) {
if(client.available()) {
char c = client.read();
appMessage += c;
if (c == '\n')
{
Serial.println("Message from Client: "+appMessage);
if(appMessage.IndexOf("kitchenLight1") != -1)
{
digitalWrite(kitchenLight,HIGH);
}
}
}
}
}
client.close();
}
答案 0 :(得分:0)
在您的Arduino和Android之间建立连接之后,您应该添加延迟,例如,一两秒(更可能是两个),因为Arduino需要花费时间准备好接收命令。 希望这会有所帮助:)