日期:2014-05-20  浏览次数:20832 次

帮忙看下这段代码是什么意思?
public class LengthFramer implements Framer {  
    public static final int MAXMESSAGELENGTH = 65535;  
    public static final int BYTEMASK = 0xff;  
    public static final int SHORTMASK = 0xffff;  
    public static final int BYTESHIFT = 8;  
  
    private DataInputStream in; // wrapper for data I/O  
  
    public LengthFramer(InputStream in) throws IOException {  
        this.in = new DataInputStream(in);  
    }  
  
    public void frameMsg(byte[] message, OutputStream out) throws IOException {  
        if (message.length > MAXMESSAGELENGTH) {  
            throw new IOException("message too long");  
        }  
        // write length prefix  
        out.write((message.length >> BYTESHIFT) & BYTEMASK);//OutPutStream.write(int b)只写b的低位8bit到流中,高24bit忽略  
        out.write(message.length & BYTEMASK);  
        // write message  
        out.write(message);  
        out.flush();  
    }  
  
    public byte[] nextMsg() throws IOException {  
        int length;  
        try {  
            length = in.readUnsignedShort(); // read 2 bytes  
        } catch (EOFException e) { // no (or 1 byte) message  
            return null;