0
私はこれに関する多くの研究を行い、すべての方法を試してみました。私はソケット192.168.0.101:18250で通信を受け付けるC#サーバーを持っています。私は以下のコードを(以下)持っており、それはアプリの主な活動です。私がそれをコード化する方法は、すべてがonCreateメソッドにあるので、ソケットはアプリケーションが起動するとすぐに接続するはずですが、私のサーバー上では接続が見えません。サーバーは完璧で、問題はないと私は想定しています。私はまた、市場からのアプリを試して、私の電話がサーバに接続することさえできるのかどうかを見てみました。これは、ソケット接続をテストするために数分で一緒に投げたコードですが、ソケットを試しても接続できません。そして例外も例外ではありません!Androidクライアントサーバー
import java.io.*;
import java.net.*;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.*;
public class ClientServerTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
InetAddress addr = InetAddress.getByName("192.168.0.101");
int port = 18250;
// This constructor will block until the connection succeeds
Socket socket = new Socket(addr, port);
socket.getOutputStream();
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
wr.write("Hello World");
wr.flush();
} catch (UnknownHostException e) {
TextView t=(TextView)findViewById(R.id.textView1);
t.setText(t.getText() + e.getMessage() + "\r\n");
} catch (IOException e) {
TextView t=(TextView)findViewById(R.id.textView1);
t.setText(t.getText() + e.getMessage() + "\r\n");
}
}
}
どのようにソケットが接続されないことを知っていますか?ホストを解決できない場合は例外がスローされます。 1行でブロックしますか? – madmik3
一般的な 'catch(Exception e)'ブロックを 'IOException'の後に追加してみてください。 'try'ブロックがエラーに遭遇していないため、' UnknownHostException'や 'IOException'が何も失敗しているとは限りません。また、logcatをチェックしてください。他のタイプの例外がスローされた場合は、それをログに記録する必要があります。 – Squonk
さて、私はエラーが発生し、スタックトレースはすべて「許可が拒否されました」と言います。マニフェストなどに何らかの権限を追加する必要がありますか? –