Hello, I have a few questions about the file transfer extension. I’ll go on record saying that I know I should RTFM, but it would save me a tremendous amount of time to not have to intimately understand each of the underlying XEPs (that’s why I’m using this API ).
And now, for my questions.
Does the SMACK file transfer extension send binary data directly between two endpoints (out-of-band I think it’s called) versus through the XMPP server? If so, is it usually pretty reliable/fast?
Can downloads be resumed as part of the API?
What’s the difference between this implementation and Jingle really? Is one better than the other, or more appropriate for certain scenarios?
It does both. It will transfer out of band and if a connection cannot be created between the two clients due to NAT or firewall issues then inband is utilized. It is generally fairly reliable but to be frank there are some improvements which could be made.
Resuming, though part of the protocol, is not currently possible through the API.
Jingle is a means of negotiating a stream between two clients, be it VOIP, video, or even files. There are some XEPs written which cover doing file transfer utilizing Jingle, though the current file transfer functionality predates jingle entirely and thus does not utilize it.
I wouldn’t recommend going with Jingle for file transfer. Besides that there is no standard for it and that it was superseded by XEP-0214: File Repository and Sharing you would need to implement pseudo-TCP over UDP which is not a trivial task. Instead I would recommend exploring the XEP-214 that was discussed during the last XMPP event as the way to go for file transfers.
I know this is a really old topic, but I have pretty similar questions as Lindsay had.
Lindsay/1
As i understand it now, the basic file transfer provided by a Smack extension is trying to send the actual file through SOCKS5 at first. If the Jabber server has a SOCKS5 proxy, the file is not going through the server? Is the file transported directly to the target endpoint from the source? I read that if a SOCKS5 proxy is present when the file transfer is initiated, it will be used.
Lindsay/3
Any changes about the answer to this question? I mean, if I need simple file transfering (with direct connection between peers), should I use the basic extension or the file transfer that Jingle provides.