users@grizzly.java.net

Re: who can help me?how a server base grizzly receive 2MB data from client

From: windshome <lixiangfeng_at_infosec.com.cn>
Date: Wed, 30 Jan 2008 18:32:46 -0800 (PST)

I process the data to make a digital signature, and return signed data to
client.


Jeanfrancois Arcand-2 wrote:
>
> Hi,
>
> sorry for the delay...
>
> windshome wrote:
>> I write a server base grizzly,I write a client which send data to server
>> and
>> receive response from server. I send 50 bytes data and 2k data to server
>> ok,but when I send 20K and 2MB data,server no response.
>> I view the code of grizzly,find the ByteBuffer of a workthread capity is
>> 8192,then I modify it to 81920,then 20k data can receive by server.
>>
>> If my Server set the init size of ByteBuffer is 81920,I think it would
>> use
>> to much memory,who can tell me some method,will dynamic just the
>> buffer,can
>> receive some bytes data ,or some MB data?
>
> What are you doing with the bytes? Are you saving the bytes somewhere on
> disk/db (freeing your memory) or you must keep them in memory?
>
> Thanks
>
> -- Jeanfrancois
>
>
>>
>>
>>
>> My Server's protocol parser code :
>>
>>
>> final ProtocolFilter parserProtocolFilter = new
>> ParserProtocolFilter() {
>> public ProtocolParser newProtocolParser() {
>> return new ProtocolParser() {
>> private boolean isExpectingMoreData = false;
>> private ByteBuffer byteBuffer;
>> private Request message;
>>
>> public boolean hasMoreBytesToParse() {
>> return false;
>> }
>>
>> public boolean isExpectingMoreData() {
>> return isExpectingMoreData;
>> }
>>
>> public Object getNextMessage() {
>> return message;
>> }
>>
>> public boolean hasNextMessage() {
>>
>>
>> ByteBuffer dup = byteBuffer.duplicate();
>> System.out.println( "byteBuffer.position2()=" +
>> byteBuffer.position() );
>> if (byteBuffer.position() == 0){
>> System.out.println("byteBuffer.position() ==
>> 0");
>> isExpectingMoreData = true;
>> return false;
>> }
>> dup.flip();
>>
>>
>> if( dup.remaining()< 4 ){
>> isExpectingMoreData = true;
>> return false;
>> }
>>
>> byte[] bs = new byte[4];
>> dup.get(bs);
>> int len= (bs[0] << 24) + (bs[1] << 16) + (bs[2]
>> <<
>> 8) + (bs[3] << 0);
>>
>> if( dup.remaining() < len ){
>> isExpectingMoreData = true;
>> return false;
>> }
>> byte[] data = new byte[len];
>> dup.get( data );
>>
>> try {
>> message = new ByteRequest(data);
>> } catch (Exception e) {
>> e.printStackTrace();
>> message=null;
>> return false;
>> }
>> return true;
>>
>> }
>>
>> public void startBuffer(ByteBuffer bb) {
>> byteBuffer = bb;
>> }
>>
>> public boolean releaseBuffer() {
>> byteBuffer = null;
>> message = null;
>> return false;
>> }
>>
>> };
>> }
>> };
>>
>>
>>
>>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>
>

-- 
View this message in context: http://www.nabble.com/who-can-help-me-how-a-server-base-grizzly-receive-2MB-data-from-client-tp15174927p15196984.html
Sent from the Grizzly - Users mailing list archive at Nabble.com.