{
boolean packetReceived=false;
SocketChannel channel = (SocketChannel) key.channel();
int count;
buffer.clear(); // make buffer empty
ObjectReader reader = (ObjectReader)key.attachment();
// loop while data available, channel is non-blocking
while ((count = channel.read (buffer)) > 0) {
buffer.flip(); // make buffer readable
int pkgcnt = reader.append(buffer.array(),0,count);
buffer.clear(); // make buffer empty
}
//check to see if any data is available
int pkgcnt = reader.execute();
while ( pkgcnt > 0 ) {
if (synchronous) {
sendAck(key,channel);
} //end if
pkgcnt--;