我在套接字上使用ObjectOutputStream,因为我创建了需要在客户端和服务器之间传输的新类。 我还创建了一个独特的线程,每隔一秒将一个字节发送到服务器,以便连续检查连接并检查它是否存活。Java - 通过套接字发送字节对象
byte b=1;
oos.writeObject(b);
我使用“字节”,因为它是我可以发送的最小的对象(右?),以便服务器不会读取更长的对象。
我的问题是如果服务器读取一个字节对象(字节的大小)或一个8字节的对象(对象的大小) ?
我在套接字上使用ObjectOutputStream,因为我创建了需要在客户端和服务器之间传输的新类。 我还创建了一个独特的线程,每隔一秒将一个字节发送到服务器,以便连续检查连接并检查它是否存活。Java - 通过套接字发送字节对象
byte b=1;
oos.writeObject(b);
我使用“字节”,因为它是我可以发送的最小的对象(右?),以便服务器不会读取更长的对象。
我的问题是如果服务器读取一个字节对象(字节的大小)或一个8字节的对象(对象的大小) ?
如果您必须使用ObjectOutputStream,则发送哪个对象并不重要,因为在发送第一个对象之后,将来会发送对该对象的引用。出于这个原因,我建议你发送一个特定的枚举类似。
enum Control {
HEARTBEAT
}
您可以使用DataOutputStream更小的连线格式,其中1个字节是一个字节。鉴于IP数据包头大约为20个字节,发送1个字节或8个字节并不重要,因为开销远高于此值。
一个字节是*不是您可以发送的最小对象;有一点是。一个字节由8位组成。布尔值相当于字节。使用'writeObject'将导致类,类签名和可序列化字段被写入到流中,所以大小会有所不同;我建议你自己测试一下Byte对象的情况。 – Vulcan
你的意思是一个对象大小是8字节? –
如何发送一个位? – Onca