【发布时间】:2013-11-10 02:01:37
【问题描述】:
我正在尝试使用 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。因此,每次将Point 添加到例如服务器时,它都应该将此点发送给客户端。
现在,我需要在oos.writeObject() 中添加什么?单个Point,还是Points 的List?以及它们是如何从ois.readObject() 中检索到的?
我有点困惑,因为写入 ObjectOutputStream 可能快也可能慢。 Se 读取 ObjectInputStream - 我看到它的方式 - 会或导致很大的延迟(如果它每 ~ 15 毫秒读取一个值并且点的添加速度比这更快)或导致很多延迟。
【问题讨论】: