OReceiver.java
import java.io.File;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smackx.filetransfer.FileTransferListener;
import org.jivesoftware.smackx.filetransfer.FileTransferManager;
import org.jivesoftware.smackx.filetransfer.FileTransferRequest;
import org.jivesoftware.smackx.filetransfer.IncomingFileTransfer;
public class OReceiver {
public static void main(String[] args) {
XMPPConnection.DEBUG_ENABLED = true;
XMPPConnection connection;
SmackConfiguration.setPacketReplyTimeout(45000);
System.out.println(“Starting IM client”);
ConnectionConfiguration config = new ConnectionConfiguration(
“myipadress”, 5222, “myservicename”);
connection = new XMPPConnection(config);
try {
connection.connect();
System.out.println("Connected to " + connection.getHost());
SASLAuthentication.supportSASLMechanism(“PLAIN”, 0);
connection.login(“receiver0”, “receiver0”);
System.out.println("Logged in as " + connection.getUser());
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
} catch (XMPPException ex) {
ex.printStackTrace();
System.out.println("Failed to log in as " + connection.getUser());
System.exit(1);
}
final FileTransferManager manager = new FileTransferManager(connection);
manager.addFileTransferListener(new FileTransferListener() {
public void fileTransferRequest(FileTransferRequest request) {
// Accept it
try {
System.out.println(“Receiving”);
IncomingFileTransfer transfer = request.accept();
transfer.recieveFile(new File(“D:\”+transfer.getFileName()));
System.out.println("File Received: "
+ transfer.getFileName());
} catch (XMPPException e) {
e.printStackTrace();
}
}
});
}
}
OSender.java
import java.io.File;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager;
import org.jivesoftware.smackx.filetransfer.FileTransferManager;
import org.jivesoftware.smackx.filetransfer.FileTransferNegotiator;
import org.jivesoftware.smackx.filetransfer.OutgoingFileTransfer;
import org.jivesoftware.smackx.filetransfer.FileTransfer.Status;
public class OSender {
private static String filePath = “D:\SmackReceiver\src\Test.java”;
public static void transferFile() {
XMPPConnection.DEBUG_ENABLED = true;
XMPPConnection connection = null;
System.out.println(“Starting IM client”);
if (connection == null || !connection.isConnected()) {
try {
ConnectionConfiguration config = new ConnectionConfiguration(
“myipadress”, 5222, “myservicename”);
connection = new XMPPConnection(config);
connection.connect();
System.out.println("Connected to " + connection.getHost());
SASLAuthentication.supportSASLMechanism(“PLAIN”, 0);
connection.login(“sender0”, “sender0”);
System.out.println("Logged in as " + connection.getUser());
} catch (XMPPException ex) {
ex.printStackTrace();
System.out.println(ex.getMessage());
System.out.println(ex.fillInStackTrace());
System.out.println("Failed to log in as "
+ connection.getUser());
System.exit(1);
}
}
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
System.out.println(e1.getMessage());
System.out.println(e1);
}
try {
FileTransferManager manager = new FileTransferManager(connection);
FileTransferNegotiator.setServiceEnabled(connection, true);
InBandBytestreamManager ibm = InBandBytestreamManager
.getByteStreamManager(connection);
ibm.setMaximumBlockSize(26000);
FileTransferNegotiator.IBB_ONLY = true;
OutgoingFileTransfer transfer = manager
.createOutgoingFileTransfer(“receiver0@myservicename/Smack”);
transfer.sendFile(new File(filePath), “SampleBoardingPass”);
while (!transfer.isDone()) {
try {
Thread.sleep(50L);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
if (transfer.getStatus().equals(Status.complete)) {
System.out.println((new StringBuilder(" Status is “))
.append(transfer.getStatus())
.append(” and data size is !")
.append(transfer.getBytesSent()).toString());
} else {
System.out.println(“Inside else block…”
+ transfer.getStatus() + " : " + transfer.getError()
+ “:” + transfer.getException());
}
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(e.fillInStackTrace());
}
}
public static void main(String args[]) {
try {
OSender.transferFile();
} catch (Exception e) {
e.printStackTrace();
}
}
}