TCP を使用してソケット経由で通信しようとしています。送信する必要があるデータは、描画中の描画です。そのため、すべてのポイントを送信するか、シェイプ (一連のポイント) のみを送信するかを選択できます。
すぐに引けるのがいいのでポイントを送った方が良さそうです。ローカルでのみ使用するため、大量のデータが問題になることはありません。今私が抱えている問題は、ソケットがどのように機能するかを正確に理解することです。現在、私のコードは次のとおりです。
while(true){
try {
Thread.sleep(10);
}
catch (InterruptedException e) {}
switch(connectionStatus){
case CONNECTED:
if(isHost){
try {
oos.writeObject(myObject);
} catch (IOException e) {
e.printStackTrace();
}
}else{
try {
myObject = (myObjectType) ois.readObject();
mainFrame.repaint();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}
しかし、言うまでもなく、これは常に実行されているため、かなり効率が悪いようです。新しいデータがあるときにのみObjectOutputStream
(oos) に書き込む方法はありますか? 私はあなたが投票しなければならないことを読むと思います。読み取りも ObjectOutputStream をクリアしますか?
編集
Point
明確にするために:ソケットを介して複数のオブジェクトを送信したい。したがって、サーバーなどに a が追加されるたびに、Point
このポイントをクライアントに送信する必要があります。
今、私は何を中に入れる必要がありoos.writeObject()
ますか?単一のPoint
、またはList
のPoint
? そして、それらはどのように から取得されますois.readObject()
か?
ObjectOutputStream への書き込みは高速または低速になる可能性があるため、少し混乱しています。ObjectInputStream を読み取ると、私が見るように、大きな遅延が発生するか、大きな遅延が発生するか (〜 15 ミリ秒ごとに値が読み取られ、ポイントがそれよりも速く追加される場合)、または多くの遅延が発生します。