首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用alljoyn发送数据

使用alljoyn发送数据
EN

Stack Overflow用户
提问于 2015-08-08 13:57:12
回答 2查看 559关注 0票数 4

我使用alljoyn将字符串转换为字节数组后,该字符串也包含图像(在使用Base64进行字符串转换后)。它工作得很好,但是如果有一些图像,它会产生以下错误

代码语言:javascript
复制
08-08 18:55:21.158  20724-21095/co.coinflipsrl.infomage E/ALLJOYN﹕ 20.237 ****** ERROR ALLJOYN external          ...oyn_core/src/MsgArg.cc:790 |  0x900d
08-08 18:55:21.159  20724-21095/co.coinflipsrl.infomage E/ALLJOYN_JAVA﹕ 20.238 ****** ERROR ALLJOYN_JAVA external     .../jni/alljoyn_java.cc:11480 |  0x0001
08-08 18:55:21.161  20724-21095/co.coinflipsrl.infomage E/SimpleClient﹕ SimpleInterface.Ping(): org.alljoyn.bus.MarshalBusException: cannot marshal class [B into 'ay'
org.alljoyn.bus.MarshalBusException: cannot marshal class [B into 'ay'
        at org.alljoyn.bus.MsgArg.marshal(MsgArg.java:534)
        at org.alljoyn.bus.MsgArg.marshal(MsgArg.java:556)
        at org.alljoyn.bus.ProxyBusObject.methodCall(Native Method)
        at org.alljoyn.bus.ProxyBusObject.access$300(ProxyBusObject.java:35)
        at org.alljoyn.bus.ProxyBusObject$Handler.invoke(ProxyBusObject.java:264)
        at java.lang.reflect.Proxy.invoke(Proxy.java:397)
        at $Proxy2.Ping(Unknown Source)
        at co.coinflipsrl.infomage.sharing.alljoynshare.ClientFragment$BusHandler.handleMessage(ClientFragment.java:292)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)
 Caused by: org.alljoyn.bus.BusException: ER_BUS_BAD_VALUE
        at org.alljoyn.bus.MsgArg.set(Native Method)
        at org.alljoyn.bus.MsgArg.marshal(MsgArg.java:464)

发送代码是:

代码语言:javascript
复制
 sendUiMessage(MESSAGE_PING, msg.obj);
                        byte[] sentObj = (byte[]) msg.obj;
                        Object reply = mSimpleInterface.Ping((byte[]) msg.obj);
                        byte[] receivedObj = (byte[]) reply;
                        if (Arrays.equals(sentObj, receivedObj)) {
                            sendUiMessage(MESSAGE_PING_REPLY, true);
                        } else {
                            sendUiMessage(MESSAGE_PING_REPLY, false);
                        }

接收代码是:

代码语言:javascript
复制
 public byte[] Ping(byte[] inStr) {

        sendUiMessage(MESSAGE_PING, inStr);

         //Simply echo the ping message.
        sendUiMessage(MESSAGE_PING_REPLY, inStr);
        return inStr;
    }

    /* Helper function to send a message to the UI thread. */
    private void sendUiMessage(int what, Object obj) {
        mHandler.sendMessage(mHandler.obtainMessage(what, obj));
    }
EN

回答 2

Stack Overflow用户

发布于 2016-01-02 10:29:10

我觉得你的数据是空的。null不能通过alljoyn发送

代码语言:javascript
复制
Object reply = mSimpleInterface.Ping((byte[]) msg.obj);
票数 1
EN

Stack Overflow用户

发布于 2018-07-24 05:13:38

当字节数组大小很大时,会出现此异常,通过在固定大小的字节数组100000中以多个数据包发送数据来克服此问题。希望这能帮上忙。

代码语言:javascript
复制
FileInputStream fis = new FileInputStream(path);
byte[] buf = new byte[100000];

while (fis.read(buf) > 0) {
    mSimpleInterface.Ping(buf);
    transferedFileBytes += buf.length;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31893846

复制
相关文章

相似问题

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