> However, how would Wireshark know what version of response was sent? The version matches the ApiVersionsRequest that was sent.
Chain Head <[email protected]> 於 2024年10月28日 週一 上午2:02寫道: > Yes, I realised that too. In fact, if the response version is <3, then the > size will be INT32. However, how would Wireshark know what version of > response was sent? > > On Sun, Oct 27, 2024 at 10:18 PM Chia-Ping Tsai <[email protected]> > wrote: > > > hi Chain > > > > > ? - 1 byte value 0x3c > > > > This magic byte represents the size of the following 'Array of API keys.' > > We need to know the size of the array to determine how many elements must > > be read from the network. > > > > Here's a snippet demonstrating how the size is used. > > ``` > > > > int arrayLength = _readable.readUnsignedVarint() - 1; > > > > ApiVersionCollection newCollection = new > ApiVersionCollection(arrayLength); > > > > for (int i = 0; i < arrayLength; i++) { > > > > newCollection.add(new ApiVersion(_readable, _version)); > > > > } > > > > this.apiKeys = newCollection; > > > > ``` > > Best, > > Chia-Ping > > > > Chain Head <[email protected]> 於 2024年10月28日 週一 上午12:20寫道: > > > > > Hello, > > > I set-up a simple Java client to publish a sample message to Kafka > > broker. > > > I can see API Versions request v3 and response messages. I am able to > map > > > all the bytes as described here ( > > > https://kafka.apache.org/protocol.html#The_Messages_ApiVersions) for > API > > > Versions request and response except for 1 byte as shown below. > > > > > > - Length - INT32 > > > - Correlation ID - INT32 > > > - Error code - INT16 > > > - ? - 1 byte value 0x3c > > > - Array of API keys, supported versions and tagged fields > > > - Throttle - INT32 > > > - Tagged fields. > > > > > > Can you please help me understand? > > > > > > Thanks. > > > > > >
