Android&对象输出流:对峙

时间:2012-02-22 15:21:57

标签: java android objectoutputstream

该应用程序的目的是简单地将字符串对象发送到我的机器上的服务器。所有端口转发配置都设置为我在我的机器上使用Java客户端测试服务器。

问题在于从Android客户端与服务器通信。服务器似乎永远不会被击中。

应用程序的基本纲要:带1个按钮的简单屏幕& 1 textview。按钮将对象发送到服务器,服务器响应消息,更新文本视图。正如我所说,服务器似乎永远不会被击中。任何人都有任何想法,我可以做些什么来解决这个问题?

public class ObjectTestActivity extends Activity {

Button submit;
private String string = "Hello Android";
private ObjectOutputStream oos;
private ObjectInputStream ois;
private final int PORT = 3000;

TextView tv;


@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button send = (Button) findViewById(R.id.send);
    tv = (TextView) findViewById(R.id.tv);

    try{

        InetAddress host = InetAddress.getLocalHost();
        Socket socket = new Socket("xx.xx.xxx.xxx", PORT);

        oos = new ObjectOutputStream(socket.getOutputStream());
        ois = new ObjectInputStream(socket.getInputStream());

    }catch(UnknownHostException e){}
     catch(IOException e){}
}


public void onClick(View view){

    try{
        oos.writeObject(string);
        String serverMsg = (String) ois.readObject();
        ois.close();
        oos.close();
                    tv.setText("Message from Server: " + serverMsg);
    }catch(IOException e){}
     catch(ClassNotFoundException e){}
}

}

1 个答案:

答案 0 :(得分:0)

首先尝试从简单的Java客户端测试您的Android客户端代码。如果这至少有用,你知道它是一个android问题。

然后查看您的清单文件。你需要“android.permission.INTERNET”。

您没有在onCreate的异常上打印堆栈跟踪,因此无法知道是否发生了异常。

也可以尝试使用更高端口号32344。