10

私の質問: Android と iOS の両方で XMPP 経由で Spark クライアント (Spark 2.6.3) にファイル転送を行っています。Android ではこれを成功させましたが (ライブラリが優れているため)、iOS ではまだ成功していません。ただし、両方のデバイスで、バイトストリームを介した転送が失敗することに気付きました...

<error code="404" 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>

Android では、転送は ibb ... に頼ることで完了します。

<iq id="DK1IO-19" to="myUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><open xmlns="http://jabber.org/protocol/ibb" block-size="4096" sid="jsi_4740809287923906297" stanza="iq"/></iq>

また、Android では、Spark から Android アプリにファイルを送信すると、バイトストリーム経由で正常に動作するようです。

iOS では、ibb 接続を自分でコーディングする必要がありますが、そもそもバイトストリームが失敗するのはなぜでしょうか?

完全なログ (Android アプリ) :

05-15 13:42:04.023: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq id="DK1IO-9" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"><si xmlns="http://jabber.org/protocol/si"><feature xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="submit"><field var="stream-method"><value>http://jabber.org/protocol/bytestreams</value><value>http://jabber.org/protocol/ibb</value></field></x></feature></si></iq>
05-15 13:42:04.040: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-10" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.060: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq id="DK1IO-10" to="myUsername@beta.myCompany.co.uk/123" type="result" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="client" name="Smack" type="pc"/><feature var="http://jabber.org/protocol/xhtml-im"/><feature var="http://jabber.org/protocol/muc"/><feature var="http://jabber.org/protocol/bytestreams"/><feature var="http://jabber.org/protocol/commands"/><feature var="http://jabber.org/protocol/si/profile/file-transfer"/><feature var="http://jabber.org/protocol/si"/><feature var="http://jabber.org/protocol/ibb"/></query></iq>
05-15 13:42:04.080: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-11" to="beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#items"></query></iq>
05-15 13:42:04.090: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-11" from="beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="pubsub.beta.myCompany.co.uk" name="Publish-Subscribe service"/><item jid="broadcast.beta.myCompany.co.uk" name="Broadcast service"/><item jid="search.beta.myCompany.co.uk" name="User Search"/><item jid="conference.beta.myCompany.co.uk" name="Public Chatrooms"/><item jid="proxy.beta.myCompany.co.uk" name="Socks 5 Bytestreams Proxy"/></query></iq>
05-15 13:42:04.100: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-12" to="pubsub.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.110: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq id="DK1IO-10" to="myUsername@beta.myCompany.co.uk/123" type="result" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="client" name="Smack" type="pc"/><feature var="http://www.xmpp.org/extensions/xep-0166.html#ns"/><feature var="urn:xmpp:tmp:jingle"/></query></iq>
05-15 13:42:04.130: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-12" from="pubsub.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><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#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/pubsub#default_access_model_open"/><feature var="http://jabber.org/protocol/disco#info"/></query></iq>
05-15 13:42:04.160: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-13" to="broadcast.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.170: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-13" from="broadcast.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="component" type="generic" name="Broadcast service"/><feature var="http://jabber.org/protocol/disco#info"/><feature var="http://jabber.org/protocol/disco#items"/></query></iq>
05-15 13:42:04.190: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-14" to="search.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.200: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-14" from="search.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><query xmlns="http://jabber.org/protocol/disco#info"><identity category="directory" type="user" name="User Search"/><feature var="jabber:iq:search"/><feature var="http://jabber.org/protocol/disco#info"/><feature var="http://jabber.org/protocol/rsm"/></query></iq>
05-15 13:42:04.210: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-15" to="conference.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.230: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-15" from="conference.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><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>
05-15 13:42:04.240: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-16" to="proxy.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/disco#info"></query></iq>
05-15 13:42:04.250: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-16" from="proxy.beta.myCompany.co.uk" to="myUsername@beta.t
05-15 13:42:04.250: I/System.out(523): 01:42:04 PM RCV  (1093423288): xttools.co.uk/123"><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>
05-15 13:42:04.330: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-17" to="proxy.beta.myCompany.co.uk" type="get"><query xmlns="http://jabber.org/protocol/bytestreams"/></iq>
05-15 13:42:04.341: I/System.out(523): 01:42:04 PM RCV  (1093423288): <iq type="result" id="DK1IO-17" from="proxy.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/123"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query></iq>
05-15 13:42:04.350: I/System.out(523): 01:42:04 PM SENT (1093423288): <iq id="DK1IO-18" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_4740809287923906297" mode = "tcp"><streamhost jid="myUsername@beta.myCompany.co.uk/123" host="127.0.0.1" port="7777"/><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query></iq>
05-15 13:42:04.400: D/dalvikvm(523): GC_CONCURRENT freed 361K, 5% free 9330K/9799K, paused 5ms+4ms
05-15 13:42:09.412: I/System.out(523): 01:42:09 PM RCV  (1093423288): <iq id="DK1IO-18" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_4740809287923906297" mode="tcp"><streamhost jid="myUsername@beta.myCompany.co.uk/123" host="127.0.0.1" port="7777"/><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query><error code="404" 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>
05-15 13:42:09.430: I/System.out(523): 01:42:09 PM SENT (1093423288): <iq id="DK1IO-19" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><open xmlns="http://jabber.org/protocol/ibb" block-size="4096" sid="jsi_4740809287923906297" stanza="iq"/></iq>
05-15 13:42:09.451: I/System.out(523): 01:42:09 PM RCV  (1093423288): <iq id="DK1IO-19" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"/>
05-15 13:42:09.470: I/System.out(523): 01:42:09 PM SENT (1093423288): <iq id="DK1IO-20" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><data xmlns="http://jabber.org/protocol/ibb" seq="0" sid="jsi_4740809287923906297">SGVsbG8sIEFuZHkh</data></iq>
05-15 13:42:09.480: I/System.out(523): 01:42:09 PM RCV  (1093423288): <iq id="DK1IO-20" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"/>
05-15 13:42:09.490: I/System.out(523): 01:42:09 PM SENT (1093423288): <iq id="DK1IO-21" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="set"><close xmlns="http://jabber.org/protocol/ibb" sid="jsi_4740809287923906297"/></iq>
05-15 13:42:09.500: I/System.out(523): 01:42:09 PM RCV  (1093423288): <iq id="DK1IO-21" to="myUsername@beta.myCompany.co.uk/123" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"/>

完全なログ (iOS アプリ) :

2012-05-16 10:41:16.988 JabberClient[392:207] RECIEVED IN APP DELEGATE - <iq xmlns="jabber:client" id="5CCE541D-A2D2-4115-8D0F-A683EE9B18AB" to="myUsername@beta.myCompany.co.uk/844b40b3" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"><si xmlns="http://jabber.org/protocol/si"><feature xmlns="http://jabber.org/protocol/feature-neg"><x xmlns="jabber:x:data" type="submit"><field var="stream-method"><value>http://jabber.org/protocol/bytestreams</value></field></x></feature></si></iq>
2012-05-16 10:41:16.989 JabberClient[392:207] Attempting XEP65 connection to friendsUsername@beta.myCompany.co.uk/Spark 2.6.3
2012-05-16 10:41:16.990 JabberClient[392:207] TURNSocket DELEGATE STARTING
2012-05-16 10:41:16.991 JabberClient[392:5307] SENT - <iq type="get" to="beta.myCompany.co.uk" id="24C8A655-1B23-4E49-B0D2-557B863C6EB4"><query xmlns="http://jabber.org/protocol/disco#items"/></iq>
2012-05-16 10:41:16.999 JabberClient[392:5307] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" type="result" id="24C8A655-1B23-4E49-B0D2-557B863C6EB4" from="beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/844b40b3"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="pubsub.beta.myCompany.co.uk" name="Publish-Subscribe service"/><item jid="broadcast.beta.myCompany.co.uk" name="Broadcast service"/><item jid="search.beta.myCompany.co.uk" name="User Search"/><item jid="conference.beta.myCompany.co.uk" name="Public Chatrooms"/><item jid="proxy.beta.myCompany.co.uk" name="Socks 5 Bytestreams Proxy"/></query></iq>
2012-05-16 10:41:17.000 JabberClient[392:5307] SENT - <iq type="get" to="proxy.beta.myCompany.co.uk" id="A8D03520-2200-4260-A150-910BC70F794A"><query xmlns="http://jabber.org/protocol/disco#info"/></iq>
2012-05-16 10:41:17.004 JabberClient[392:5007] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" type="result" id="A8D03520-2200-4260-A150-910BC70F794A" from="proxy.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/844b40b3"><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>
2012-05-16 10:41:17.005 JabberClient[392:5007] SENT - <iq type="get" to="proxy.beta.myCompany.co.uk" id="50A73193-944D-402D-B2E4-EEACC537B23B"><query xmlns="http://jabber.org/protocol/bytestreams"/></iq>
2012-05-16 10:41:17.008 JabberClient[392:5007] RECIEVED IN TURNSOCKET - <iq xmlns="jabber:client" type="result" id="50A73193-944D-402D-B2E4-EEACC537B23B" from="proxy.beta.myCompany.co.uk" to="myUsername@beta.myCompany.co.uk/844b40b3"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query></iq>
2012-05-16 10:41:17.009 JabberClient[392:5007] SENT - <iq type="set" from="myUsername@beta.myCompany.co.uk/844b40b3" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" id="5CCE541D-A2D2-4115-8D0F-A683EE9B18AB"><query xmlns="http://jabber.org/protocol/bytestreams" sid="5CCE541D-A2D2-4115-8D0F-A683EE9B18AB" mode="tcp"><streamhost xmlns="http://jabber.org/protocol/bytestreams" jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query></iq>
2012-05-16 10:41:27.027 JabberClient[392:540b] RECIEVED IN TURN SOCKET - <iq xmlns="jabber:client" id="5CCE541D-A2D2-4115-8D0F-A683EE9B18AB" to="myUsername@beta.myCompany.co.uk/844b40b3" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="5CCE541D-A2D2-4115-8D0F-A683EE9B18AB" mode="tcp"><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query><error code="404" type="CANCEL"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" lang="en">Could not establish socket with any provided host</text></error></iq>
2012-05-16 10:41:27.028 JabberClient[392:540b] TURN Connection failed!

OpenFire XMPP 設定 -

xmpp.auth.anonymous - true
xmpp.client.compression.policy - disabled
xmpp.client.idle -1
xmpp.client.idle.ping - false
xmpp.domain - beta.myCompany.co.uk
xmpp.enabled - true
xmpp.externalip - proxy.beta.myCompany.co.uk
xmpp.offline.quota - 102400
xmpp.offline.type - bounce
xmpp.proxy.enabled - true
xmpp.proxy.port - 7777
xmpp.proxy.transfer.required - true
xmpp.server.compression.policy - disabled
xmpp.server.socket.active - true
xmpp.session.conflict-limit - 0
xmpp.session.conflict.limit - 0
xmpp.socket.ssl.active - true

5 月 19 日の更新:以下は、Spark が正常に Android に送信したログの一部です(逆ではありません)。使用されているストリームホストはプロキシではありません! しかし、私はまだ iOS でこれを再現できていません。プロキシが機能していませんか?

RCV  (1079219752): <iq id="ktI51-43" to="myUsername@beta.myCompany.co.uk/123" type="set" from="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3"><query xmlns="http://jabber.org/protocol/bytestreams" sid="jsi_1985730781887292843" mode="tcp"><streamhost jid="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" host="10.95.xxx.xx" port="7777"/><streamhost jid="proxy.beta.myCompany.co.uk" host="127.0.1.1" port="7777"/></query></iq>
SENT (1079219752): <iq id="ktI51-43" to="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" type="result"><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost-used jid="friendsUsername@beta.myCompany.co.uk/Spark 2.6.3" /></query></iq>

非プロキシ ストリームホストが使用されている場合、Spark から iOS アプリに送信しようとすると、接続が拒否されることに注意してください。(このSOCKS プロトコル バージョン 5ドキュメントのポイント 6 のように)。次のコードでは Rep は 5 です (ただし、0 である必要があります)。

UInt8 ver = [NSNumber extractUInt8FromData:data atOffset:0];
UInt8 rep = [NSNumber extractUInt8FromData:data atOffset:1];

Hosts File : (注: このスタックオーバーフローの質問では、一部の数字を x に置き換えました)

127.0.0.1       localhost
10.95.xxx.xxx   intranet.myCompany.co.uk
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
10.95.xxx.xxx   beta.myCompany.co.uk
4

3 に答える 3

1

OpenFireプロパティの設定が間違っていました。'xmpp.externalip'が間違っています。'xmpp.proxy.enabledip'を使用して、これをパブリックIPに設定する必要がありました。

于 2012-06-13T10:27:06.100 に答える
0

サーバーが 127.0.0.1 または localhost のスチームホスト (プロキシ) を報告しているように見えますが、これは正しくありません。

最近、openfire サーバーで、誰かがサーバー名を 127.0.0.1 に指定するように /etc/hosts を構成したことを確認しました。これは、サーバー名を検索したときにクライアントに報告されたものです。

これを確認する最も簡単な方法は、'ping' と 'ping' で、どの IP アドレスが表示されるかを確認します。

たとえば、サーバー名が beta.myCompany.co.uk の場合、(サーバーにログインしているときに) 次のことを試してください。

ping ベータ ping beta.myCompany.co.uk

いずれかが 127.0.0.1 の IP で返された場合は、/etc/hosts (Windows の場合は C:\Windows\System32\drivers\etc\hosts) をチェックし、beta と beta.myCompany.co.uk が存在しないことを確認します (または適切なデータがある場合)。

于 2012-06-07T22:26:56.140 に答える
-1

はい、ファイル転送でこのエラーが発生します。コンパイルされたライブラリを使用しないで、android 用の smack のソース コード amack/smack を使用すると、エラーを追跡するのに役立ちます。ソースコードを使用しました。

https://github.com/rtreffer/smack/blob/master/source/org/jivesoftware/smack/XMPPConnection.java

于 2012-06-07T07:15:49.703 に答える