Android手机不通过TCP / IP发送数据

时间:2015-06-10 10:30:16

标签: android sockets tcp arduino

我想在我的Android手机和连接到使用以太网屏蔽的wifi路由器的arduino板之间建立TCP / IP连接。该项目的目标是通过带有四个按钮的应用程序驾驶小型遥控车;我已经编写了下面显示的代码 ,但问题是arduino(充当服务器)和&之间没有数据通信。 Android手机。在arduino方面的代码很好,因为我尝试使用LabView通过我的PC发送数据。 注意蓝牙不是一个选项在Labview& amp;中使用了相同的地址。它工作正常,所以地址或端口可能不是问题

那么任何人都可以指导我的代码有什么问题,虽然它构建良好吗?我正在使用Android Studion 1.1.0

    import android.app.AlertDialog;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.support.v4.app.DialogFragment;


    import java.io.BufferedWriter;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;


public class MainActivity extends ActionBarActivity {
String ip_add="192.168.1.104";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
public void move_forward(View view){
    try{
        InetAddress serverAddr=InetAddress.getByName(ip_add);

        Socket s=new Socket(serverAddr,80);
        BufferedWriter out=new BufferedWriter(new                   OutputStreamWriter(s.getOutputStream()));
        char c='b';
        out.write(c);
        out.flush();
        //out.close();
        s.close();


    }catch (Exception ex){}

}
public void move_left(View view){
    try{
        Socket s=new Socket(ip_add,80);
        BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        char c='c';
        out.write(c);           
        out.flush();
        // out.close();
        s.close();


    }catch (Exception ex){}

}
public void move_right(View view){
    try{
        Socket s=new Socket(ip_add,80);
        BufferedWriter out=new BufferedWriter(new     OutputStreamWriter(s.getOutputStream()));
        char c='d';
        out.write(c);
        out.flush();
        //out.close();
        s.close();
    }catch (Exception ex){


    }


}
public void move_back(View view){
    try{
        Socket s=new Socket(ip_add,80);
        BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        char c='e';
        out.write(c);
        out.flush();
        //out.close();
        s.close();


    }catch (Exception ex){}

}

} `

1 个答案:

答案 0 :(得分:-1)

根据您的评论,接收数据的服务器是HTTP服务器,但您正在发送原始TCP数据。像您一样只向HTTP服务器发送一个字符不会触发任何内容。

您可以这样做,但是如果您这样做,则必须发送完整的HTTP请求,而不仅仅是一个字符。可以按如下方式发送简单的HTTP响应:

out.write("GET /index.htm HTTP/1.0\r\n\r\n");