Socket如何发送数据包?
WiZiM 2008-01-30 10:45:43 服务器端使用Socket对客户端发送数据,服务器端使用DataOutputStream装饰BufferOutputStream,
即new DataOutputStream(new BufferOutputStream(out))来构造输出流
使用输出流的方法writeInt(),writeUTF()等方法将数据写入到缓冲区,然后调用flush()将数据一起发送出去。
比如我向客户端传达数据包(int+int+int+boolean)这种形式的数据包,我就使用三次writeInt(),和一次writeBoolean()然后使用flush()将这4个数据一次发送出去。
一般来说客户端接受的时候会触发一次数据来到的事件,比如客户端是flash,就会触发一次ProgressEvent.SOCKET_DATA事件。
但是遇到网络阻塞或者其他一些问题。 客户端有可能接受到三个int,boolean没有传送过来,就触发了ProgressEvent.SOCKET_DATA事件,等boolean到来的时候就又触发了一次ProgressEvent.SOCKET_DATA事件。我有没有什么办法让3个int和1个boolean 变成一个数据包,使客户端在接受到3个int以后不会立即触发ProgressEvent.SOCKET_DATA事件,而是等boolean到来,这个数据包完整了以后才触发ProgressEvent.SOCKET_DATA事件?