Re: Re: compressed data from an asynchronous socket !!
mark W <[email protected]>
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Message-ID | <[email protected]> |
Is there a way in Gnutella protocol that tells in advance how long a single compressed block of data will be? Thanks, * Mark ----- Original Message ---- From: "[email protected]" <[email protected]> To: [email protected] Sent: Wednesday, July 18, 2007 12:24:14 PM Subject: [the_gdf] Re: compressed data from an asynchronous socket !! Quoting mark W <aus_waugh@yahoo. com> from ml.gnutella. dev-forum: :Yeah, it's a continuous stream of data and each received block is related to :earlier received blocks. Good, so now you see the error in your earlier posting: you must not end the stream after each received buffer / message but keep it open. :One probable solution in mind is : :Store the starting compressed chunk (beginning of stream) into a temp buffer. :Whenever next compressed data comes, add this starting buffer to the received :data and then pass it to inflater: Why do you insist in storing data into a temp buffer: just give it to the inflater, and be prepared to get output back out of it. In other words, you inflate on the fly and keep pushing the data to the inflater. Of course, you must read some fixed amount of data out of the socket, so if this is what you mean by "temp buffer", then yes. But no extra buffering of input is required at your level. If you can get this all right, then you'll be done with the "easy" part. The transmit side of a compressed connection (that is, deflation) is much more complex than reception of compressed data. Do you see why? Raphael <!-- #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;} #ygrp-mlmsg table {font-size:inherit;font:100%;} #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, sans-serif;} #ygrp-mlmsg pre, code {font:115% monospace;} #ygrp-mlmsg * {line-height:1.22em;} #ygrp-text{ font-family:Georgia; } #ygrp-text p{ margin:0 0 1em 0;} #ygrp-tpmsgs{ font-family:Arial; clear:both;} #ygrp-vitnav{ padding-top:10px;font-family:Verdana;font-size:77%;margin:0;} #ygrp-vitnav a{ padding:0 1px;} #ygrp-actbar{ clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;} #ygrp-actbar .left{ float:left;white-space:nowrap;} .bld{font-weight:bold;} #ygrp-grft{ font-family:Verdana;font-size:77%;padding:15px 0;} #ygrp-ft{ font-family:verdana;font-size:77%;border-top:1px solid #666; padding:5px 0; } #ygrp-mlmsg #logo{ padding-bottom:10px;} #ygrp-vital{ background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;} #ygrp-vital #vithd{ font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;} #ygrp-vital ul{ padding:0;margin:2px 0;} #ygrp-vital ul li{ list-style-type:none;clear:both;border:1px solid #e0ecee; } #ygrp-vital ul li .ct{ font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;} #ygrp-vital ul li .cat{ font-weight:bold;} #ygrp-vital a { text-decoration:none;} #ygrp-vital a:hover{ text-decoration:underline;} #ygrp-sponsor #hd{ color:#999;font-size:77%;} #ygrp-sponsor #ov{ padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;} #ygrp-sponsor #ov ul{ padding:0 0 0 8px;margin:0;} #ygrp-sponsor #ov li{ list-style-type:square;padding:6px 0;font-size:77%;} #ygrp-sponsor #ov li a{ text-decoration:none;font-size:130%;} #ygrp-sponsor #nc { background-color:#eee;margin-bottom:20px;padding:0 8px;} #ygrp-sponsor .ad{ padding:8px 0;} #ygrp-sponsor .ad #hd1{ font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;} #ygrp-sponsor .ad a{ text-decoration:none;} #ygrp-sponsor .ad a:hover{ text-decoration:underline;} #ygrp-sponsor .ad p{ margin:0;} o {font-size:0;} .MsoNormal { margin:0 0 0 0;} #ygrp-text tt{ font-size:120%;} blockquote{margin:0 0 0 4px;} .replbq {margin:4;} --> Send instant messages to your online friends http://uk.messenger.yahoo.com [Non-text portions of this message have been removed]