首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.NullPointerException at sun.nio.ch.AsynchronousSocketChannelImpl.read

java.lang.NullPointerException at sun.nio.ch.AsynchronousSocketChannelImpl.read
EN

Stack Overflow用户
提问于 2013-08-21 13:59:40
回答 2查看 361关注 0票数 0

这是我的代码,我有下面的问题,阅读...when连接,接受它会发生!

代码语言:javascript
复制
    int port = 8080;
        try {
            final AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(Executors
                    .newSingleThreadExecutor());
            final AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open(group).bind(
                    new InetSocketAddress(port));

            System.out.println("Server listening on " + port);
            server.accept("Client connection", 
                    new CompletionHandler<AsynchronousSocketChannel, Object>() {
                public void completed(AsynchronousSocketChannel ch, Object att) {
                    System.out.println("Accepted a connection");
                    ByteBuffer arg0= null;
                    ch.read(arg0);
                    System.out.println(arg0.toString());
                    server.accept("Client connection", this);
                }

                public void failed(Throwable exc, Object att) {
                    System.out.println("Failed to accept connection");
                }
            });
            group.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
        } catch (IOException | InterruptedException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

日志和错误:

代码语言:javascript
复制
Server listening on 8080
Accepted a connection
Exception in thread "pool-1-thread-1" java.lang.NullPointerException
    at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:277)
    at SafeSurf$1.completed(SafeSurf.java:27)
    at SafeSurf$1.completed(SafeSurf.java:1)
    at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
    at sun.nio.ch.Invoker$2.run(Invoker.java:206)
    at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

我的问题是什么?当它解决后,arg0是否充满了它所读到的内容?

任何帮助都可以。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-21 14:01:48

给定的

代码语言:javascript
复制
   ByteBuffer arg0= null;
   ch.read(arg0);

你不需要先分配你的ByteBuffer吗?

例如:

代码语言:javascript
复制
   ByteBuffer buffer = ByteBuffer.allocate(size);
票数 1
EN

Stack Overflow用户

发布于 2013-08-21 14:07:04

我猜ch.read(arg0);行会导致错误。您将arg0设置为null,然后尝试写入它,但在此之前,您可能需要像这样初始化它:arg0=ByteBuffer.allocate(desired_capacity);

如果不知道要选择哪种容量,则可以将ByteBuffer设置为预期的最大大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18359501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档