0

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

问题在于从 android 客户端与服务器交谈。服务器似乎永远不会被击中。

应用程序的基本概要:带有 1 个按钮和 1 个文本视图的简单屏幕。按钮将对象发送到服务器,服务器以消息响应,更新文本视图。正如我所说,服务器似乎从未被击中。任何人都知道我能做些什么来解决这个问题?

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){}
}

}

4

1 回答 1

0

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

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

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

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

于 2012-02-22T18:21:48.803 回答