Re: Re: compressed data from an asynchronous socket !!
mark W <[email protected]>
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Message-ID | <[email protected]> |
Yeah, it's a continuous stream of data and each received block is related to earlier received blocks. 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: InflaterInputStream str = new InflaterInputStream (memStream) ; int i = str.Read(OutBuffer, 0, BytesInBuffer) ; The buffer inflated successfully , extract inflated data. If decompressed data of starting chunk is processed , remove it and pass the remaining data to process. Do you think differently or it should work? Thanks in advance, *mark ----- Original Message ---- From: "[email protected]" <[email protected]> To: [email protected] Sent: Wednesday, July 18, 2007 10:59:09 AM Subject: [the_gdf] Re: compressed data from an asynchronous socket !! Quoting mark W <aus_waugh@yahoo. com> from ml.gnutella. dev-forum: :If I buffer all asynchronous data from the session and pass synchronously it to :SharpZipLib inflater,e.g. : :InflaterInputStrea m str = new InflaterInputStream (memStream) ; :int i = str.Read(OutBuffer, 0, BytesInBuffer) ; : :but due to the permanent connection, eventually I will eat up all my memory. Of course. The total amount of data sent during a "session" is potentially infinite (say, very large, larger than any amount of RAM you can come up with). What does this mean? It means you're approaching the problem from the wrong angle. :In another way , if I pass asynchronous buffer to above inflater(whenever data :arrived at socket), it will throw an exception of invalid header or checksum. Hehe. This means you still haven't figured how to do this, despite the hint I gave you earlier (remember: it's a continuous stream of data). You can't go forward until you figure this one out. And note the fix is trivial (I saw the problem immediately in the code snippet you posted) but not being able to see it means you won't be able to continue your task. Go back to the eariler problem and make it work first. Then you'll see that your current problem will be fixed as well and everything should be crystal clear then. 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]