//Send a ServerConnectionHeader
ServerConnectionHeader sHeader = new ServerConnectionHeader();
sHeader.send(os);
//Verify that a properly formatted Data message with 100
//data bytes is received
DataMessage dm = new DataMessage();
try {
//verify that the open and eof flags are set on the data
//message
dm.setOpen().setEof().receive(is,getTimeout());
} catch (ProtocolException e) {
e.printStackTrace();
throw new TestException(e.getMessage(),e);
}
//verify that 600 bytes are received
byte[] payload = (byte[])dm.getPayload();
if (payload.length!=600) {
//try once again - it is possible the message was split
try {
dm.receive(is,getTimeout());
} catch (ProtocolException e) {
e.printStackTrace();
throw new TestException(e.getMessage(),e);
}
}
if (dm.getSize()!=600) {
throw new TestException("Test did not receive"
+ " the expected number of bytes");
}
//Respond with a Data message that requires acknowledgement
dm = new DataMessage();
dm.setEof().setSessionID((byte)0x00).setPayload(
new byte[] {(byte)0x16,(byte)0x16}).setSize((short)2)
.setSessionID((byte) 0x00).setEof().setClose().setAckRequired();
dm.send(os);
//Verify that a properly formatted acknowledgement message is
//received
AcknowledgementMessage am = new AcknowledgementMessage();
try {
am.receive(is,getTimeout());