Kryonet BufferOverFlow 异常

问题描述

我正在尝试使用 KryoNet 库发送位图,但我一直收到此错误

com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0,required: 1000000
Serialization trace:
mBuffer (android.graphics.Bitmap)
at com.esotericsoftware.kryo.io.ByteBufferOutput.require(ByteBufferOutput.java:189)
at com.esotericsoftware.kryo.io.ByteBufferOutput.writeBytes(ByteBufferOutput.java:283)
at com.esotericsoftware.kryo.io.ByteBufferOutput.writeBytes(ByteBufferOutput.java:269)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:36)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:25)
at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:577)
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:68)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:495)
at com.esotericsoftware.kryo.Kryo.writeClassAndobject(Kryo.java:599)
at com.esotericsoftware.kryonet.Kr

这是我在服务器和客户端都使用的代码

serverKryo = new Server();
                    serverKryo.start();
                    serverKryo.addListener(listener);
                    try {
                        serverKryo.bind(5050,5060);
                        Kryo kryo = serverKryo.getKryo();
                        kryo.register(Bitmap.class);
                        kryo.register(byte[].class);
                        kryo.register(String.class);
                  } catch (IOException e) {
            e.printstacktrace();
                      }

                }

客户端代码

Thread kryoThread =    new Thread(new Runnable() {
            @Override
            public void run() {
                Client client = new Client(1000000,1000000);
                client.start();
                client.addListener(new Listener() {
                    @Override
                    public void connected(Connection connection) {
                        super.connected(connection);
                        Kryo kryo = client.getKryo();
                        kryo.register(Bitmap.class);
                        kryo.register(byte[].class);
                        kryo.register(String.class);
                        client.sendTCP(bitmap);
                    }

                    @Override
                    public void disconnected(Connection connection) {
                        super.disconnected(connection);
                    }

                    @Override
                    public void received(Connection connection,Object object) {
                            super.received(connection,object);
                        if (object instanceof  String){
                            String result = (String) object;
                            XposedBridge.log(""+result);
                        }
                    }
                });

                try {
                    client.connect(5000,"192.168.1.15",5050,5060);

                } catch (IOException e) {
                    XposedBridge.log("problem in connect" );
                }

            }
        });

我尝试了以下方法 1 - 我尝试使用构造函数增加 bufferSize 2- 阻塞执行,直到 bufferSize i 大于所需的 bufferSize (这是一个坏主意,它是一个无限循环) 3- 使用不同的端口 4- 在 listener.connected 函数中使用 sendTCP

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...