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.permission.INTERNET」が必要です。

onCreateの例外にスタックトレースを出力していないため、例外が発生したかどうかを知る方法はありません。

また、おそらくより高いポート番号32344を使用してみてください。

于 2012-02-22T18:21:48.803 に答える