I am trying to send files over my android app with smack library 4.1.1, though i am having some errors to do so. The thing is that i don't know why it just sends the files to a device but after that it doesn't let me to send to others and others can't send to others either, for example the first time i opened a listener with one device, that device could and can still send files just to one device (the first that it sent) but the one that receives can not, the file seems to arrive but with 0 data or maybe it doesn't arrive and just when arrives something causes error i am not sure but after a while i don't know if the connection or something breaks and i can send files with any other device but not with another, just one. and the others gets this error:
I also test it with spark and i can receive files perfectly from spark even though when i send a file to spark it shows error on spark also.
Logs
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>
it is really wierd, i dont really know what i am doing wrong. look at my code
SEND FILE:
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();
}
}
RECEIVING FILES:
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();
}
}
});
}
I would love to read any answer or hint. I am stuck on this for 2 days D: i really need help :/.
The port is forwarded ofcures like i said it works with one device or the first deviced that open a listener first i think.
I hope this helps anyone, the api works fine even though we need to change some properties in our openfire server:
At the time it is working very well, need to make more tests though, I am wrong please someone provide any other info to fix this.