How many times is the messageReceived() Method invoked when I send large data?

sinogermany sinogermany at gmail.com
Wed Aug 25 21:05:05 EDT 2010


Hi all,

I'm quite new to Netty and went through the user guide document. 
I'm using the Netty 3.2.1 framework to be the basis of my binary protocol.
But before that I wrote something to test and get familiar with Netty binary
transport.



What I concluded is: 
when I send large data from the client side with one single write() method, 
the messageReceived method on the server side was invoked more than once.
It seems the messageReceived method would be invoked for many times.
How to fix it? I remember MINA has something like
setMaxDecoderSize(10*1024*1024).
Does netty got something similar? I believe that.



Here's some of my code:
Client Side:

ChannelFuture cf = client.connect("127.0.0.1", 9999);
......

/**Uploads a local file to the server side*/
public void uploadBinaryFile(String srcUrl, String destUrl) throws Exception
{
    ChannelBuffer buf = ChannelBuffers.dynamicBuffer();

    byte[] destUrlBytes = destUrl.getBytes("UTF-8");
    buf.writeInt(destUrlBytes.length);
    buf.writeBytes(destUrlBytes);

    byte[] checksum = UtilDigest.getSHA(destUrl);
    buf.writeInt(checksum.length);
    buf.writeBytes(checksum);

    InputStream in = new FileInputStream(srcUrl);
    int buffer = 2048;
    byte[] bytes = new byte[buffer];
    int bytesRead;
    while( (bytesRead = in.read(bytes, 0, buffer)) > 0 ){
        buf.writeBytes(bytes, 0, bytesRead);
    }
    cf.getChannel().write(buf); //I debugged the new buf Object, about 4 MB.
}






Server side:

static int count = 0;

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
    ChannelBuffer buf = (ChannelBuffer) e.getMessage();
    System.out.println("Received " + (++count) + " messages.");
    System.out.println("Message length: " + buf.readableBytes());
}




my server side output was:
Received 1 messages.
Message length: 1024
Received 2 messages.
Message length: 2048
Received 3 messages.
Message length: 2048
Received 4 messages.
Message length: 3072
Received 5 messages.
Message length: 4096
Received 6 messages.
Message length: 6144
Received 7 messages.
Message length: 8192
Received 8 messages.
Message length: 12288
Received 9 messages.
Message length: 16384
Received 10 messages.
Message length: 24576
Received 11 messages.
Message length: 32768
Received 12 messages.
Message length: 49152
Received 13 messages.
Message length: 65536
Received 14 messages.
Message length: 34012
Received 15 messages.
Message length: 38800
Received 16 messages.
Message length: 31280
Received 17 messages.
Message length: 65536
Received 18 messages.
Message length: 65536
Received 19 messages.
Message length: 47048
Received 20 messages.
Message length: 35040
Received 21 messages.
Message length: 52560
Received 22 messages.
Message length: 35040
Received 23 messages.
Message length: 38800
Received 24 messages.
Message length: 31280
Received 25 messages.
Message length: 35040
Received 26 messages.
Message length: 35040
Received 27 messages.
Message length: 35040
Received 28 messages.
Message length: 35040
Received 29 messages.
Message length: 65536
Received 30 messages.
Message length: 57104
Received 31 messages.
Message length: 65536
Received 32 messages.
Message length: 65536
Received 33 messages.
Message length: 65536
Received 34 messages.
Message length: 31152
Received 35 messages.
Message length: 35040
Received 36 messages.
Message length: 35040
Received 37 messages.
Message length: 35040
Received 38 messages.
Message length: 17520
Received 39 messages.
Message length: 35040
Received 40 messages.
Message length: 35040
Received 41 messages.
Message length: 35040
Received 42 messages.
Message length: 35040
Received 43 messages.
Message length: 35040
Received 44 messages.
Message length: 52560
Received 45 messages.
Message length: 35040
Received 46 messages.
Message length: 65536
Received 47 messages.
Message length: 42504
Received 48 messages.
Message length: 65536
Received 49 messages.
Message length: 65536
Received 50 messages.
Message length: 29528
Received 51 messages.
Message length: 38800
Received 52 messages.
Message length: 35040
Received 53 messages.
Message length: 31280
Received 54 messages.
Message length: 52560
Received 55 messages.
Message length: 65536
Received 56 messages.
Message length: 65536
Received 57 messages.
Message length: 29528
Received 58 messages.
Message length: 52560
Received 59 messages.
Message length: 52560
Received 60 messages.
Message length: 35040
Received 61 messages.
Message length: 52560
Received 62 messages.
Message length: 35040
Received 63 messages.
Message length: 35040
Received 64 messages.
Message length: 35040
Received 65 messages.
Message length: 35040
Received 66 messages.
Message length: 65536
Received 67 messages.
Message length: 65536
Received 68 messages.
Message length: 29528
Received 69 messages.
Message length: 35040
Received 70 messages.
Message length: 35040
Received 71 messages.
Message length: 35040
Received 72 messages.
Message length: 65536
Received 73 messages.
Message length: 65536
Received 74 messages.
Message length: 26608
Received 75 messages.
Message length: 35040
Received 76 messages.
Message length: 65536
Received 77 messages.
Message length: 60024
Received 78 messages.
Message length: 52560
Received 79 messages.
Message length: 52560
Received 80 messages.
Message length: 65536
Received 81 messages.
Message length: 24984
Received 82 messages.
Message length: 35040
Received 83 messages.
Message length: 35040
Received 84 messages.
Message length: 35040
Received 85 messages.
Message length: 52560
Received 86 messages.
Message length: 52560
Received 87 messages.
Message length: 38800
Received 88 messages.
Message length: 31280
Received 89 messages.
Message length: 52560
Received 90 messages.
Message length: 35040
Received 91 messages.
Message length: 38800
Received 92 messages.
Message length: 31280
Received 93 messages.
Message length: 65536
Received 94 messages.
Message length: 24984
Received 95 messages.
Message length: 32120
Received 96 messages.
Message length: 35040
Received 97 messages.
Message length: 35040
Received 98 messages.
Message length: 35040
Received 99 messages.
Message length: 35040
Received 100 messages.
Message length: 52560
Received 101 messages.
Message length: 38800
Received 102 messages.
Message length: 65536
Received 103 messages.
Message length: 35824
Received 104 messages.
Message length: 35040
Received 105 messages.
Message length: 35040
Received 106 messages.
Message length: 38800
Received 107 messages.
Message length: 31280
Received 108 messages.
Message length: 65536
Received 109 messages.
Message length: 24984
Received 110 messages.
Message length: 65536
Received 111 messages.
Message length: 65536
Received 112 messages.
Message length: 65536
Received 113 messages.
Message length: 65536
Received 114 messages.
Message length: 39456
Received 115 messages.
Message length: 31280
Received 116 messages.
Message length: 52560
Received 117 messages.
Message length: 35040
Received 118 messages.
Message length: 26315


I don't quite understand. Is this a fragation problem? 
Any suggestions for transporting large binary data?

Thanks a lot for your help!

Daniel
-- 
View this message in context: http://netty-forums-and-mailing-lists.685743.n2.nabble.com/How-many-times-is-the-messageReceived-Method-invoked-when-I-send-large-data-tp5463771p5463771.html
Sent from the Netty User Group mailing list archive at Nabble.com.


More information about the netty-users mailing list