首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android手机不通过TCP/ip发送数据

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

Stack Overflow用户
提问于 2015-06-10 10:30:15
回答 1查看 649关注 0票数 0

我想在我的android手机和使用以太网屏蔽连接到wifi路由器的arduino板之间建立TCP/IP连接。该项目的目的是通过一个带有四个按钮的应用程序来驱动一辆小型远程汽车:向前、向后、向左、右。我编写了下面所示的代码,但问题是arduino(充当服务器)之间没有数据通信& arduino端的android phone.The代码很好,因为我使用LabView通过我的PC发送数据。注意:蓝牙不是Labview中使用的option.same地址&它工作得很好,所以地址或端口可能不是问题。

所以,请任何人指导我的代码到底出了什么问题,尽管它构建得很好?我正在使用AndroidStudion1.1.0

代码语言:javascript
复制
    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){}

}

}`

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 07:59:11

根据您的注释,接收数据的服务器是HTTP服务器,但您正在发送原始TCP数据。像这样只向HTTP服务器发送一个字符不会触发任何操作。

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

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30753754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档