Hi, I made a simple Netty Server. It receives requests from clients, read information from database and send it back to the client. The server send back "the answer" in JSON format. The problem is that the JSON object sometimes bigger than 15-20 MB. The server convert the object to JSON format correctly, but the client doesn't get the whole information. I always get the exception on the client side: com.google.gson.JsonSyntaxException: com.google.gson.stream. MalformedJsonException: Unterminated string at line 1 column 44021 path $. object The problem is that bufferedreader only reads the first 44020 characters of the response. (However the response is much bigger.) Somebody can help me what is the problem with my code?
My initializer class: @Override protected void initChannel(SocketChannel c) throws Exception { ChannelPipeline pipeline = c.pipeline(); pipeline.addLast(new DelimiterBasedFrameDecoder(Server.MAX_FRAME_SIZE, Delimiters.lineDelimiter())); pipeline.addLast(new StringDecoder(Charset.forName("UTF-8"))); pipeline.addLast(new StringEncoder(Charset.forName("UTF-8"))); pipeline.addLast("handler", new ServerHandler(p2p)); } Server.java sendMessage method: private void sendMessage(ChannelHandlerContext ctx, Message msg, boolean closeConnection) { String msgJson = gson.toJson(msg) + "\r\n"; ChannelFuture future = ctx.writeAndFlush(msgJson); if (closeConnection) { future.addListener(ChannelFutureListener.CLOSE); } } Client.java sendRequestMessage public Message sendRequestMessage(Message msg) throws Exception { Peer peer = getPeer(); Socket newClientSocket = new Socket(peer.getHost(), peer.getPort()); InputStream bounded = new BoundedInputStream(newClientSocket.getInputStream(), MAX_FRAME_SIZE); BufferedReader reader = new BufferedReader(new InputStreamReader(bounded)); PrintWriter writer = new PrintWriter(newClientSocket.getOutputStream()); //Send request Message writer.print(gson.toJson(msg, Message.class) + "\r\n"); writer.flush(); String response = reader.readLine(); try { newClientSocket.close(); } catch (Exception e) { logger.warn("Can't close socket: " + peer.toString(), e); } Message responseMessage = gson.fromJson(response, Message.class); return responseMessage; } I can't figure out what is the problem with my code. -- You received this message because you are subscribed to the Google Groups "Netty discussions" group. To unsubscribe from this group and stop receiving emails from it, send an email to netty+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/netty/3966d7b9-83e1-4aa7-8c26-0731ea032750%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.