コード例 #1
0
  static {
    // SPDY UNKNOWN Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(0xFFFF);
    frames.writeByte(0xFF);
    frames.writeMedium(4);
    frames.writeInt(random.nextInt());

    // SPDY NOOP Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(5);
    frames.writeInt(0);

    // SPDY Data Frame
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeByte(0x01);
    frames.writeMedium(1024);
    for (int i = 0; i < 256; i++) {
      frames.writeInt(random.nextInt());
    }

    // SPDY SYN_STREAM Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(1);
    frames.writeByte(0x03);
    frames.writeMedium(12);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeShort(0x8000);
    frames.writeShort(0);

    // SPDY SYN_REPLY Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(2);
    frames.writeByte(0x01);
    frames.writeMedium(8);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeInt(0);

    // SPDY RST_STREAM Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(3);
    frames.writeInt(8);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeInt(random.nextInt() | 0x01);

    // SPDY SETTINGS Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(4);
    frames.writeByte(0x01);
    frames.writeMedium(12);
    frames.writeInt(1);
    frames.writeMedium(random.nextInt());
    frames.writeByte(0x03);
    frames.writeInt(random.nextInt());

    // SPDY PING Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(6);
    frames.writeInt(4);
    frames.writeInt(random.nextInt());

    // SPDY GOAWAY Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(7);
    frames.writeInt(4);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);

    // SPDY HEADERS Frame
    frames.writeByte(0x80);
    frames.writeByte(2);
    frames.writeShort(8);
    frames.writeInt(4);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
  }
コード例 #2
0
  private static ChannelBuffer createFrames(int version) {
    int length = version < 3 ? 1176 : 1174;
    ChannelBuffer frames = ChannelBuffers.buffer(length);

    // SPDY UNKNOWN Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(0xFFFF);
    frames.writeByte(0xFF);
    frames.writeMedium(4);
    frames.writeInt(random.nextInt());

    // SPDY NOOP Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(5);
    frames.writeInt(0);

    // SPDY Data Frame
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);
    frames.writeByte(0x01);
    frames.writeMedium(1024);
    for (int i = 0; i < 256; i++) {
      frames.writeInt(random.nextInt());
    }

    // SPDY SYN_STREAM Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(1);
    frames.writeByte(0x03);
    if (version < 3) {
      frames.writeMedium(12);
    } else {
      frames.writeMedium(10);
    }
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    frames.writeShort(0x8000);
    if (version < 3) {
      frames.writeShort(0);
    }

    // SPDY SYN_REPLY Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(2);
    frames.writeByte(0x01);
    if (version < 3) {
      frames.writeMedium(8);
    } else {
      frames.writeMedium(4);
    }
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);
    if (version < 3) {
      frames.writeInt(0);
    }

    // SPDY RST_STREAM Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(3);
    frames.writeInt(8);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);
    frames.writeInt(random.nextInt() | 0x01);

    // SPDY SETTINGS Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(4);
    frames.writeByte(0x01);
    frames.writeMedium(12);
    frames.writeInt(1);
    if (version < 3) {
      frames.writeMedium(random.nextInt());
      frames.writeByte(0x03);
    } else {
      frames.writeByte(0x03);
      frames.writeMedium(random.nextInt());
    }
    frames.writeInt(random.nextInt());

    // SPDY PING Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(6);
    frames.writeInt(4);
    frames.writeInt(random.nextInt());

    // SPDY GOAWAY Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(7);
    if (version < 3) {
      frames.writeInt(4);
    } else {
      frames.writeInt(8);
    }
    frames.writeInt(random.nextInt() & 0x7FFFFFFF);
    if (version >= 3) {
      frames.writeInt(random.nextInt() | 0x01);
    }

    // SPDY HEADERS Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(8);
    frames.writeByte(0x01);
    frames.writeMedium(4);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);

    // SPDY WINDOW_UPDATE Frame
    frames.writeByte(0x80);
    frames.writeByte(version);
    frames.writeShort(9);
    frames.writeInt(8);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);
    frames.writeInt(random.nextInt() & 0x7FFFFFFF | 0x01);

    return frames;
  }