ソケットを介して複数の画像を送信する方法について、インターネットで見つけたいくつかの解決策を試しましたが、希望どおりに機能させることができません。私は次の設定をしています:
クライアント:
- 画面のスナップショットを取得してキューに入れるスレッド
- キューから読み取り、ソケットを介してサーバーに画像を送信する複数のスレッド
サーバ:
- 複数の接続を許可し、画像を受信してキューに入れるソケットサーバー
- キューを読み取り、画像をJPanelに書き込むスレッド
私の問題は、Imがソケットを介して画像を送信するのに苦労していることです。ソケットを開いたままにして、画像をストリーミングするだけです。さまざまな解決策を試しましたが、最初の画像のみが送信されます。あるスレッドから別のスレッドに複数の画像を書き込む方法について誰かがコードを共有できれば、私は非常に感謝しています。
編集
各画像がフラッシュされていないように感じますか?ここで、開いた接続で送信する1つのスレッドを作成します。
while(true)
{
BufferedImage imageQItem = (BufferedImage) queue.dequeue();
ImageIO.write(imageQItem,"jpg",out);//out is a dataoutputstream
}
そして、それを読み込みます(私のソケットサーバーは、上記のクライアントの接続用に新しいスレッドを作成します)
while(true)
{
System.out.println("Reading");
BufferedImage image = ImageIO.read(in);
viewer.setBufferedImage(image);
viewer.repaint();
}
発生するのは、読み取りを印刷し続けることだけです。それぞれのイメージに終止符が打たれていないようです。