かなり長い間この問題を解決しようとしましたが、最終的には専門家の助けを借りて決定しました。ソケットプログラミングを使用してサーバークライアントアプリケーションを開発しました。クライアントはサーバーに正常に接続できます。今私は、クライアントからの要求に基づいてサーバからソケットを介してオブジェクトを送信しようとしていますが、私のサーバは要求をキャッチすることができますが、サーバが送信した応答(writeObject(...))はクライアントに到達できません。
Serverのコードスニペット:クライアントがObjectStream over Javaによって送信されたオブジェクトを受信していません
ServerSocket sSocket = new ServerSocket(socketNumber);
ArrayList<LoginPassword> logIn = new ArrayList<>();
Socket cSocket = sSocket.accept();
ObjectOutputStream outputStream = new ObjectOutputStream(cSocket.getOutputStream());
outputStream.flush();
ObjectInputStream inputStream = new ObjectInputStream(cSocket.getInputStream());
LoginPassword lp1 = new LoginPassword("admin","admin");
logIn.add(lp1);
outputStream.writeObject(logIn);
outputStream.flush();
Clinetコードスニペット:送信されたデータを検出することができないので私の場合は
Socket client = new Socket(InetAddress.getLocalHost(),socketNumber);
ArrayList<LoginPassword> myList = new ArrayList<>();
ObjectOutputStream outputStream = new ObjectOutputStream(client.getOutputStream());
outputStream.flush();
ObjectInputStream inputStream = new ObjectInputStream(client.getInputStream());
//Wait untill the data is available
myList = (ArrayList<LoginPassword>) inputStream.readObject();
、クライアントはのreadObject()が呼び出されることはありませんServer.Anyヘルプでお願いします。
何も読んでいないので、なぜサーバー上でInputStreamを開きますか?クライアントと同じです:何も書いていないので、なぜあなたはOutputStreamを開きますか? –
これは私の問題を説明するためのコードスニペットです。アプリケーションの実行中に前後にデータを送信するために、クライアント側とサーバー側の両方でinputStreamとOutputStreamを使用しています。 – Rambo772
最初に削除してください。コードが正常に動作するはずです。次に、それらを再導入しますが、正しい順序で最初に読み込まれるクライアントは、入力ストリームを最初に開き、読み取ってから書き込む必要があります。最初に書き込むサーバーは、出力ストリームを最初に開き、入力ストリームを書き込み、次に開く必要があります。 –