Hi Oliver,
Thank you for your reply!

Am Mittwoch, 24. Juli 2013 11:19:01 UTC+2 schrieb Oliver:
>
> On Wed, Jul 24, 2013 at 8:22 AM, Lotte R. Leben 
> <[email protected]<javascript:>
> > wrote:
>
>>
>> *But* As far as I know readDelimited() only works with inputStreams, 
>> which kind of contradicts the whole UDP thing.
>> Since adding the delimiter was a tad tricky, I wasn't confident that the 
>> following would work:
>>
>> - add delimiter in python as mentioned above
>> - receive datagram in java
>> - read first bit to know length = n
>> - read next n bytes
>> - PacketMessage.parseFrom(chunkOfnBytes)
>>
>
> Should be fine. May be simplest to wrap your bytearray in a 
> CodedInputStream directly via CodedInputStream.newInstance().
> But see below - if the contents of the UDP datagram is entirely message 
> data you shouldn't need a separate length at all.
>
>  Or if there is no other data in the UDP datagram you could just use the 
>>> datagram length directly (i.e. get rid of the trailing garbage - why are 
>>> you padding the datagram in the first place?)
>>>
>>>
>> We are not padding it on purpose and I'd love to know how or why that 
>> garbage data got in there. :(
>>
>
> If you are using DatagramSocket.receive(DatagramPacket) this probably 
> means you are not looking at packet.getLength() on return. The datagram 
> received is read into the array owned by DatagramPacket, but it may not 
> fill the entire array so you need to inspect and use the actual length 
> returned rather than using the whole array. You want something 
> approximately like this:
>
>   DatagramPacket p = new DatagramPacket(new byte[MAX_DATAGRAM_SIZE], 
> MAX_DATAGRAM_SIZE);
>   socket.receive(p);
>   PacketMessage message = 
> PacketMessage.parseFrom(CodedInputStream.newInstance(p.getData(), 
> p.getOffset(), p.getLength()));
>

Just a Question– Since we have different Protobuf messages, we have a 
variety of lengths the payload of an incoming packet could have. Am I 
correct in the assumption that the approach above only works when we know 
the exact size the protobuf data is going to be?
 

>
> If that's not the problem, then I would look at the datagram on the wire 
> (via e.g. wireshark) to see if the garbage is present there - that'd narrow 
> it down to sender or receiver at least.
>

I'l do that.
 

>
> Oliver
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to