Network file transfer

Norman Maurer norman.maurer at googlemail.com
Tue Oct 11 04:04:28 EDT 2011


You cannot write a byte[] to the Channel. Wrap it via
ChanneBuffers.wrappedBuffers(byte[]);

See:
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/ChannelBuffers.html

I think you really should take the time and read the UserGuide again...


Bye,
Norman


2011/10/11 metalstorm <metalheadstorm at gmail.com>:
> Right i've had a look, and god my head hurts lol.
>
> ServerPipelineFactory and ClientPipelineFactory:
>
> ...
>        public ChannelPipeline getPipeline() throws Exception
>        {
>                // Create a default pipeline implementation.
>                ChannelPipeline pipeline = pipeline();
>
>                // Add the text line codec combination first,
>                // pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192,
>                // Delimiters.lineDelimiter()));
>                // pipeline.addLast("decoder", new StringDecoder());
>                // pipeline.addLast("encoder", new StringEncoder());
>
>                pipeline.addLast("executor", executionHandler);
>
>                // and then business logic.
>                pipeline.addLast("handler", new TimeServerHandler());
>
>                return pipeline;
>        }
>
> TimeClienthandler:
>
>        public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
> throws IOException
>        {
>
>                ChannelBuffer buf = (ChannelBuffer) e.getMessage();
>                byte[] line;
>                if (buf.hasArray())
>                {
>                        line = buf.array();
>                } else
>                {
>                        line = new byte[buf.capacity()];
>                        buf.getBytes(0, line);
>                }
>                FileOutputStream out = new FileOutputStream("testFile.txt");
>                out.write(line);
>
>                // close the FileOutputStream once you are done
>                out.close();
>
> TimeServerHandler:
>
>        @Override
>        public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent
> e) throws IOException
>        {
>
>                Channel ch = e.getChannel();
>
>                File myFile = new File("E:\\Downloads\\DummyFile.txt");
>                if (myFile.exists())
>                {
>
>                        System.out.println("got file: " + myFile.getName());
>                        FileInputStream in = new FileInputStream(myFile);
>
>                        int bytes = 0;
>                        byte[] buffer = new byte[8192];
>                        int len;
>
>                        while ((len = in.read(buffer)) > 0)
>                        {
>                                // ch.write(buffer, 0, len);
>                                ch.write(buffer);
>                                bytes += len;
>                        }
>                }
>
>
> Server throws this error:
>
> got file: DummyFile.txt
> 11-Oct-2011 09:00:22 org.jboss.netty.channel.socket.nio.NioWorker
> WARNING: Unexpected exception in the selector loop.
> java.lang.IllegalArgumentException: unsupported message type: class [B
>        at
> org.jboss.netty.channel.socket.nio.SocketSendBufferPool.acquire(SocketSendBufferPool.java:55)
>        at org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:461)
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.writeFromTaskLoop(NioWorker.java:393)
>        at
> org.jboss.netty.channel.socket.nio.NioSocketChannel$WriteTask.run(NioSocketChannel.java:269)
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.processWriteTaskQueue(NioWorker.java:268)
>        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:199)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>        at java.lang.Thread.run(Unknown Source)
> 11-Oct-2011 09:00:23 org.jboss.netty.channel.socket.nio.NioWorker
> WARNING: Unexpected exception in the selector loop.
> java.lang.NullPointerException
>        at org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:504)
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.writeFromTaskLoop(NioWorker.java:393)
>        at
> org.jboss.netty.channel.socket.nio.NioSocketChannel$WriteTask.run(NioSocketChannel.java:269)
>        at
> org.jboss.netty.channel.socket.nio.NioWorker.processWriteTaskQueue(NioWorker.java:268)
>        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:199)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
>        at java.lang.Thread.run(Unknown Source)
>
> Am i going about this the right way? please say i'm close :)
>
> --
> View this message in context: http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Network-file-transfer-tp6875434p6879990.html
> Sent from the Netty User Group mailing list archive at Nabble.com.
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
>



More information about the netty-users mailing list