【问题标题】:Android Smack 4.1.1 File Transfering, ERROR Could not establish socketAndroid Smack 4.1.1 文件传输,错误无法建立套接字
【发布时间】:2015-09-15 09:42:13
【问题描述】:

我正在尝试使用 smack 库 4.1.1 通过我的 android 应用程序发送文件,但这样做时遇到了一些错误。问题是我不知道为什么它只是将文件发送到设备,但之后它不允许我发送给其他人,其他人也不能发送给其他人,例如我第一次打开监听器使用一台设备,该设备可以并且仍然可以将文件仅发送到一个设备(它发送的第一个设备),但接收的设备不能,文件似乎到达但数据为 0,或者它可能没有到达,只是什么时候到达某些东西会导致错误我不确定,但过了一段时间我不知道连接是否中断,我可以用任何其他设备发送文件,但不能用另一个设备发送文件,只有一个。其他人收到此错误:

我也用 spark 测试它,我可以从 spark 完美接收文件,即使当我发送文件来 spark 时,它也会在 spark 上显示错误。

日志

    06-28 17:57:54.430    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='example.com' id='36V0P-179' type='get'><query xmlns='http://jabber.org/protocol/disco#items'></query></iq>
    06-28 17:57:54.463    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="result" id="36V0P-179" from="example.com" to="+10000000000@example.com/Example"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="pubsub.example.com" name="Publish-Subscribe service"/><item jid="proxy.example.com" name="Socks 5 Bytestreams Proxy"/><item jid="conference.example.com" name="Public Chatrooms"/></query></iq>
    06-28 17:57:54.464    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='pubsub.example.com' id='36V0P-181' type='get'><query xmlns='http://jabber.org/protocol/disco#info'></query></iq>
    06-28 17:57:54.485    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="result" id="36V0P-181" from="pubsub.example.com" to="+10000000000@example.com/Example"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="pubsub" name="Publish-Subscribe service" type="service"/><feature var="http://jabber.org/protocol/pubsub"/><feature var="http://jabber.org/protocol/pubsub#access-open"/><feature var="http://jabber.org/protocol/pubsub#collections"/><feature var="http://jabber.org/protocol/pubsub#config-node"/><feature var="http://jabber.org/protocol/pubsub#create-and-configure"/><feature var="http://jabber.org/protocol/pubsub#create-nodes"/><feature var="http://jabber.org/protocol/pubsub#delete-nodes"/><feature var="http://jabber.org/protocol/pubsub#get-pending"/><feature var="http://jabber.org/protocol/pubsub#instant-nodes"/><feature var="http://jabber.org/protocol/pubsub#item-ids"/><feature var="http://jabber.org/protocol/pubsub#meta-data"/><feature var="http://jabber.org/protocol/pubsub#modify-affiliations"/><feature var="http://jabber.org/protocol/pubsub#manage-subscriptions"/><feature var="http://jabber.org/protocol/pubsub#multi-subscribe"/><feature var="http://jabber.org/protocol/pubsub#outcast-affiliation"/><feature var="http://jabber.org/protocol/pubsub#persistent-items"/><feature var="http://jabber.org/protocol/pubsub#presence-notifications"/><feature var="http://jabber.org/protocol/pubsub#publish"/><feature var="http://jabber.org/protocol/pubsub#publisher-affiliation"/><feature var="http://jabber.org/protocol/pubsub#purge-nodes"/><feature var="http://jabber.org/protocol/pubsub#retract-items"/><feature var="http://jabber.org/protocol/pubsub#retrieve-affiliations"/><feature var="http://jabber.org/protocol/pubsub#retrieve-default"/><feature var="http://jabber.org/protocol/pubsub#retrieve-items"/><feature var="http://jabber.org/protocol/pubsub#retrieve-subscriptions"/><feature var="http://jabber.org/protocol/pubsub#subscribe"/><feature var="http://jabber.org/protocol/pubsub#subscription-options"/><feature var="http://jabber.org/protocol/disco#info"/></query></iq>
    06-28 17:57:54.486    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='proxy.example.com' id='36V0P-183' type='get'><query xmlns='http://jabber.org/protocol/disco#info'></query></iq>
    06-28 17:57:54.501    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="result" id="36V0P-183" from="proxy.example.com" to="+10000000000@example.com/Example"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="proxy" name="SOCKS5 Bytestreams Service" type="bytestreams"/><feature var="http://jabber.org/protocol/bytestreams"/><feature var="http://jabber.org/protocol/disco#info"/></query></iq>
    06-28 17:57:54.502    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='conference.example.com' id='36V0P-185' type='get'><query xmlns='http://jabber.org/protocol/disco#info'></query></iq>
    06-28 17:57:54.518    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="result" id="36V0P-185" from="conference.example.com" to="+10000000000@example.com/Example"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="conference" name="Public Chatrooms" type="text"/><identity category="directory" name="Public Chatroom Search" type="chatroom"/><feature var="http://jabber.org/protocol/muc"/><feature var="http://jabber.org/protocol/disco#info"/><feature var="http://jabber.org/protocol/disco#items"/><feature var="jabber:iq:search"/><feature var="http://jabber.org/protocol/rsm"/></query></iq>
    06-28 17:57:54.523    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='proxy.example.com' id='36V0P-187' type='get'><query xmlns='http://jabber.org/protocol/bytestreams'/></iq>
    06-28 17:57:54.537    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="result" id="36V0P-187" from="proxy.example.com" to="+10000000000@example.com/Example"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.example.com" host="198.105.244.228" port="7777"/></query></iq>
    06-28 17:57:54.539    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='+11111111111@example.com/Example' id='36V0P-189' type='set'><query xmlns='http://jabber.org/protocol/bytestreams' sid='jsi_3989032673038256169' mode='tcp'><streamhost jid='+10000000000@example.com/Example' host='fe80::5054:ff:fe12:3456%eth0' port='7777'/><streamhost jid='+10000000000@example.com/Example' host='10.0.2.15' port='7777'/><streamhost jid='proxy.example.com' host='198.105.244.228' port='7777'/></query></iq>
    06-28 17:57:59.564    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq type="get" id="843-84" from="example.com" to="+10000000000@example.com/Example"><ping xmlns="urn:xmpp:ping"/></iq>
    06-28 17:57:59.566    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='example.com' id='843-84' type='result'></iq>
    06-28 17:58:01.304    3394-3759/com.example.example D/SMACK﹕ RECV (0): <iq to="+10000000000@example.com/Example" id="36V0P-189" type="error" from="+11111111111@example.com/Example"><error type="cancel"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">Could not establish socket with any provided host</text></error></iq>
    06-28 17:58:01.308    3394-3758/com.example.example D/SMACK﹕ SENT (0): <iq to='+11111111111@example.com/Example' id='36V0P-193' type='set'><open xmlns='http://jabber.org/protocol/ibb' block-size='4096' sid='jsi_3989032673038256169' stanza='iq'/></iq>

真的很奇怪,我真的不知道我做错了什么。看我的代码

发送文件:

public static void sendFile(String Username, String filePathAndName, AbstractXMPPConnection connection){
        Log.e("FILENAMEing file", "to " + Environment.getExternalStorageDirectory() + File.separator + Example.DB_FOLDER + File.separator + "myText.jpg");
        Log.e("FILENAMEing file", "to " + Username);

        FileTransferManager manager = FileTransferManager.getInstanceFor(connection);
        OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer(Username + Example.DOMAIN + "/" + Example.APP_NAME);
        try {
            transfer.sendFile(new File(filePathAndName), "This is a Test!");
        } catch (SmackException e) {
            e.printStackTrace();
        }

    }

接收文件:

public static void setFileTransferListener(AbstractXMPPConnection connection){

    FileTransferManager manager = FileTransferManager.getInstanceFor(connection);
    // Create the listener
    manager.addFileTransferListener(new FileTransferListener() {
        @Override
        public void fileTransferRequest(FileTransferRequest request) {
            IncomingFileTransfer transfer = request.accept();
            try {
                File file = new File(Environment.getExternalStorageDirectory()  + File.separator + Example.DB_FOLDER + File.separator + "myFile22.jpg");
                transfer.recieveFile(file);
            } catch (SmackException | IOException e) {
                e.printStackTrace();
            }
        }
    });
}

我很想阅读任何答案或提示。我被困了 2 天 D:我真的需要帮助:/。

端口被转发,就像我说的它适用于一个设备或我认为首先打开侦听器的第一个设备。

【问题讨论】:

  • 我没有使用 smack 进行文件传输,但你描述的听起来像是一对一/一对多/多对多的问题,一个很好的起点是是检查对这些的支持,它可能会解释你看到的一些奇怪的行为
  • 我不知道在哪里检查它,即使我重新启动服务器它只适用于某些设备,然后我不能再次将它用于其他设备:/ @TommySM,同样的问题再次出现并且再次。 :c 我不知道如何解决它,我尝试了很多东西,但没有

标签: android xmpp openfire smack asmack


【解决方案1】:

我希望这对任何人都有帮助,即使我们需要更改我们的 openfire 服务器中的一些属性,api 也可以正常工作:

1.  xmpp.proxy.enabled – true 
2.  xmpp.proxy.port – 7777 (7777 is the default but could be another)
3.  xmpp.proxy.externalip – (host or ip)

当时它工作得很好,但需要进行更多测试,我错了,请有人提供任何其他信息来解决这个问题。

【讨论】:

  • 在这个代码必须写的服务器上? @Kobbycoder
  • 很抱歉延迟回答。您需要转到服务器管理器 > 系统属性 > 添加新属性
  • 另外,请记住在进行此更改后重新启动服务器 :-)
猜你喜欢
  • 1970-01-01
  • 2014-01-18
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
相关资源
最近更新 更多