解決に大きな問題があり、解決方法がわかりません。オブジェクトを呼び出すスレッドサーバーでは、ObjectOutputStream
を使用した後にメソッドwait()
を呼び出し、オブジェクトをサーバーに接続されているクライアントスレッドに送信します。オブジェクトが他の側に到着すると、私はオブジェクトを呼び出します。方法はnotify()
ですが、オブジェクトは自分の待機状態から復帰しません。これは、送信されたオブジェクトが同じではないために発生します。この大きな問題をどうやって解決できますか?サーバのwait()で送信されたクライアントのスレッドに通知します。
答えて
クライアントとサーバーが2つの異なるマシン/ JVMにあるかどうかにかかわらず、シリアル化後に取得するオブジェクトは、元のオブジェクトとは異なります。 あるオブジェクトで "wait()"を呼び出すと、スレッドはSAMEオブジェクトのnotify()を呼び出すまでブロックします。 ここでは2つの異なるオブジェクトがあるため、待機通知メカニズムは機能しません。 ネットワーク通信を使用してサーバーに確認応答を送信する必要があります(ソケットがある可能性があります)。
私が正しく理解していれば、サーバー上のオブジェクトをシリアル化してクライアントに送信し、クライアント上でnotify()
を呼び出し、そのサーバーに影響することを期待しています。これは、異なるコンピュータ上、または少なくとも異なるJVM上にあるため動作しません。サーバーにメッセージを送り返す唯一の方法は、ソケットを通して行うことです。
Zahniser私は、クライアントとソケットを作成するのと同じJVMでこのアプリケーションをテストしていますsocketClient = new Socket( "localhost"、port_number)、ServerSocket serverSocket =新しいServerSocket(port_number)、そして2つの異なるマシンではありません – Mazzy
If "server"と "client"のスレッドは同じJVM上にあるので、ソケットを使わずに直接オブジェクトを渡すことができます(クライアントスレッドによってポーリングされたキューにオブジェクトを追加するなど)。オブジェクトがソケットを通過する必要がある場合は、コピーが相手側で作成され、通知を返す唯一の方法はソケットを経由する方法です。 –
JVM *がある場合は@Mazzy *それらは同じではありません。 'notify'を期待通りに動作させるためには、両方のオブジェクトが1つのJVMに存在する必要があります。 –
synchronizationに関するドキュメントを読むことをお勧めします。
- 1. ローカルSNMPサーバに通知を送信
- 2. サーバ/クライアント通信
- 3. サーバ - クライアント間の通信は時間間隔でデータを送受信します
- 4. サーバからアプリケーションをインストールしたユーザセグメントに通知を送信
- 5. APNSサーバ(iOS)から送信されたプッシュ通知のリストを取得する
- 6. サーバで送信されたFCM Firebase通知を表示する方法
- 7. クライアント/サーバ通信のミドルウェア
- 8. サーバにAureliaエラーログを送信してユーザに通知する
- 9. リモート通知を受信したときにローカル通知が送信されないのはなぜですか?
- 10. onesignalを使用したパーソナライズされたプッシュ通知の送信
- 11. サーバのAPIからキーペア値で通知を送信する
- 12. MPMediaPlayerに送信されたメッセージの通知方法がタイムアウトしましたか?
- 13. 現在、Django通知では、通知を送信するたびにプレーンテキストで電子メールを送信します
- 14. トピックに送信されたFCM通知はもう受信されません
- 15. Jenkins電子メール通知が正常に送信されましたが、受信されませんでした
- 16. ソケット通信、JavaクライアントCサーバ
- 17. サーバ - クライアント通信WPF C#
- 18. Androidアプリケーション、クライアント - サーバ間通信
- 19. Androidクライアント/サーバ通信形式
- 20. クライアント/サーバ通信用NServicebus?
- 21. サーバからのFCM通知でテーブル全体を送信
- 22. 隠すプッシュ通知アプリは、私がイオンアプリに解析サーバからのプッシュ通知を送信しています
- 23. WCF Duplex - すべてのクライアントに異なる通知を送信しますか?
- 24. IAudioSessionManager2通知が送信されない
- 25. (不名誉)誤って切断されたクライアントでSignalRをサーバに通知
- 26. クライアントに送信されたバイト数を知る方法
- 27. チャットプログラムでメッセージを送信したクライアントにメッセージが送信されています
- 28. Azure通知ハブ:「テスト送信」は正常に送信されましたが、GCMトラフィックは送信されませんでした。どうして?
- 29. nodejsサーバからangularjsへの通知の送信
- 30. 通知は送信されるよりも頻繁に受信されます
あなたはネットワーク通信を使用してサーバーに何らかの確認を送信する必要があります。 – Mazzy