私は、ネットワーク経由でデータを受信し、このデータを使って無関係なことを行うアプリケーションを構築する必要があります。Javaのソケット...?
ここに私が何をしているかを明確にするコードがあります。
static Socket client = null;
static ServerSocket ss = null;
if (ss != null) {
ss.close();
}
ss = new ServerSocket(5513);
isrunning = true;
System.out.println("Waiting for client...");
client = ss.accept();
System.out.println("Client accepted.");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
とクライアント側:サーバー側で
Socket client = null;
PrintWriter out = null;
try {
client = new Socket("hostname", 5513);
out = new PrintWriter(client.getOutputStream(), true);
}
これはコードの単なる一部であることに注意してください。コードにエラーはありません。
サーバー側のコードを実行すると、クライアントが正しく接続するまで待機します。
ここに問題があります。クライアント側から接続しようとするとすぐに、「接続が拒否されました」というエラーが表示されます。
しかし、私はインターネット上で何かを見つけました。whochはクライアント側からtelnettingを試してみました。たとえば、サーバー側のIPを192.168.1.1とします。したがって、このコマンドを使用した後:
telnet 192.168.1.1 5513
私は実際にサーバーに接続します。コマンドは空の画面を起動し、コマンドラインで手動で入力したものは、Enterキーを押した後にサーバー側に送信されます(デバッグでチェックされます)。
私は手動でサーバー側に接続してデータを送信できますが、コードが接続を拒否します。
私が間違っていることを知っている人は誰ですか?
あなたの失敗の理由はわかりませんが、私はこれらの2つのチュートリアルを使用してソケットを簡単に稼働させています:http://android-er.blogspot.com/2011/01/implement-simple-socket-server-in。 html とhttp://android-er.blogspot.com/2011/01/simple-communication-using.html – HannahMitt
@HannahMitt、彼は 'while'ループを忘れました。サーバーは接続を1秒以上聞いていません。サーバーが1つの接続を確立すると、それは完了し、もう聞きません。 –
私が言ったように、これは単なるコードの一部です。私は実際にwhileループを使用しています。また、accept()メソッドは接続が確立するのを待つので、最初の接続を確立するまで何時間も待つことができます。その後、別の接続を開始するまでループします。 –