我正在尝试使用 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
通过套接字发送多个 -objects。因此,每次将 aPoint
添加到例如服务器时,它都应该将此点发送给客户端。
现在,我需要在里面放oos.writeObject()
什么?单一的Point
,还是sList
的一个Point
?它们是如何从ois.readObject()
?
我有点困惑,因为写入 ObjectOutputStream 可能快也可能慢。Se读取ObjectInputStream - 我看到它的方式 - 会或导致很大的延迟(如果它每~15ms读取一个值并且点的添加速度比这更快)或导致很多延迟。