Smack文件传输的问题 transToThread.start();楼主你的这句话写了两遍。 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lZ,我现在也遇到了和你差不多的问题,但是又有点区别。我在3G网络的情况下,能够接受到其他客服端的发送文件的请求,但是不能下载文件里面的内容,总是0KB,但是当我和SPark测试的时候,我把文件传输给Spark时,它竟然能够成功接受,我怀疑是指定的协议不对,下载是我保存文件的函数,如果你解决了,请回复下,谢谢! public void saveFileListener(final XMPPConnection conn, final String loginAccountName, final String chatUserName, final FileTransferRequest request) { Thread thread = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // ServiceDiscoveryManager sdm = // ServiceDiscoveryManager.getInstanceFor(conn); // if (sdm == null){ // sdm = new ServiceDiscoveryManager(conn); // } // sdm.addFeature("http://jabber.org/protocol/disco#info"); // sdm.addFeature("jabber:iq:privacy"); // ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info", // new DiscoverInfoProvider()); ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(conn); if (sdm == null){ sdm = new ServiceDiscoveryManager(conn); } sdm.addFeature("http://jabber.org/protocol/disco#info");// sdm.addFeature("http://jabber.org/protocol/si/profile/file-transfer"); sdm.addFeature("jabber:iq:privacy"); ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());// ProviderManager.getInstance().addIQProvider("si", "http://jabber.org/protocol/si",new StreamInitiationProvider()); ProviderManager.getInstance().addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider()); Constant.contextDebug( TAG, "new file transfere request new file transfere request new file transfere request"); Constant.contextDebug(TAG, "from" + request.getRequestor()); IncomingFileTransfer transfer = request.accept(); Constant.contextDebug(TAG, "accepted"); String download = context.getResources().getString( R.string.download); String success = context.getResources().getString( R.string.success); String fail = context.getResources().getString(R.string.fail); String time = RequsetThread.getTime(); File file = null; try { file = SdCardManager.createFile(request.getFileName(), chatUserName); if (file != null) {// file_put_contents(file.getAbsolutePath(), transfer.recieveFile()); Constant.contextDebug(TAG,"file: " + file.getAbsolutePath()); transfer.recieveFile(file); Constant.contextDebug("transfere file","sending file status : "+ transfer.getStatus()); while (!transfer.isDone()) { Constant.contextDebug("transfere file","sending file status : "+ transfer.getStatus()); if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress)) { Constant.contextDebug("transfere file","sending file status : "+ org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress); Constant.contextDebug(TAG,"Filetransfer Progress: "+ ((int) (transfer.getProgress() * 10000))/ 100.0 + " Status: " + transfer.getStatus().toString()); } else if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error)) { transfer.cancel(); ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " "+ file.getName() + " " + fail,time, true); sendChatMessage(ChatConstant.My_send_msg, chatInfo); break; } Thread.sleep(1000); } } Constant.contextDebug("transfere file", "sending file status : " + transfer.getStatus()); if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.complete) { ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " " + request.getFileName() + " " + success, time, true); sendChatMessage(ChatConstant.My_send_msg, chatInfo); } else { ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " " + file.getName() + " " + fail, time, true); sendChatMessage(ChatConstant.My_send_msg, chatInfo); } } catch (Exception e) { e.printStackTrace(); ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " " + request.getFileName() + " " + fail, time, true); sendChatMessage(ChatConstant.My_send_msg, chatInfo); request.reject(); } } }); thread.start(); } EJB3 组件之间不能相互调用 javeEE新手问个问题,关于服务器端和客户端通信的 最近想买一些关于算法的书,帮忙推荐,谢谢! HibernateUtil 工具类错误 急问:如何用输入流来接收输出流的内容,语句如何写? 請教大蝦,如何用jacob將office 2007中的文件打開,另存 网站的日志功能怎么做,或者用什么第三方工具比较好 [ Servlet应用程序必须放在Tomcat的webapps根目录下才能运行吗? jboss安装问题和部署问题 使用EJB的问题 axis2,这是什么错误:namespace mismatch 一个JSONArray的问题,请帮帮忙!
public void saveFileListener(final XMPPConnection conn,
final String loginAccountName, final String chatUserName,
final FileTransferRequest request) {
Thread thread = new Thread(new Runnable() { @Override
public void run() {
// TODO Auto-generated method stub
// ServiceDiscoveryManager sdm =
// ServiceDiscoveryManager.getInstanceFor(conn);
// if (sdm == null){
// sdm = new ServiceDiscoveryManager(conn);
// }
// sdm.addFeature("http://jabber.org/protocol/disco#info");
// sdm.addFeature("jabber:iq:privacy");
// ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info",
// new DiscoverInfoProvider());
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(conn);
if (sdm == null){
sdm = new ServiceDiscoveryManager(conn);
}
sdm.addFeature("http://jabber.org/protocol/disco#info");
// sdm.addFeature("http://jabber.org/protocol/si/profile/file-transfer");
sdm.addFeature("jabber:iq:privacy");
ProviderManager.getInstance().addIQProvider("query","http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
// ProviderManager.getInstance().addIQProvider("si", "http://jabber.org/protocol/si",new StreamInitiationProvider());
ProviderManager.getInstance().addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
Constant.contextDebug(
TAG,
"new file transfere request new file transfere request new file transfere request"); Constant.contextDebug(TAG, "from" + request.getRequestor());
IncomingFileTransfer transfer = request.accept();
Constant.contextDebug(TAG, "accepted");
String download = context.getResources().getString(
R.string.download);
String success = context.getResources().getString(
R.string.success);
String fail = context.getResources().getString(R.string.fail);
String time = RequsetThread.getTime();
File file = null;
try {
file = SdCardManager.createFile(request.getFileName(),
chatUserName);
if (file != null) {
// file_put_contents(file.getAbsolutePath(), transfer.recieveFile());
Constant.contextDebug(TAG,"file: " + file.getAbsolutePath());
transfer.recieveFile(file);
Constant.contextDebug("transfere file","sending file status : "+ transfer.getStatus());
while (!transfer.isDone()) {
Constant.contextDebug("transfere file","sending file status : "+ transfer.getStatus());
if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress)) {
Constant.contextDebug("transfere file","sending file status : "+ org.jivesoftware.smackx.filetransfer.FileTransfer.Status.in_progress);
Constant.contextDebug(TAG,"Filetransfer Progress: "+ ((int) (transfer.getProgress() * 10000))/ 100.0
+ " Status: "
+ transfer.getStatus().toString()); } else if (transfer.getStatus().equals(org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error)) {
transfer.cancel();
ChatInfo chatInfo = new ChatInfo(loginAccountName, download + " "+ file.getName() + " " + fail,time, true);
sendChatMessage(ChatConstant.My_send_msg,
chatInfo);
break;
}
Thread.sleep(1000);
}
} Constant.contextDebug("transfere file",
"sending file status : " + transfer.getStatus()); if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.complete) {
ChatInfo chatInfo = new ChatInfo(loginAccountName,
download + " " + request.getFileName() + " "
+ success, time, true);
sendChatMessage(ChatConstant.My_send_msg, chatInfo);
} else {
ChatInfo chatInfo = new ChatInfo(loginAccountName,
download + " " + file.getName() + " " + fail,
time, true);
sendChatMessage(ChatConstant.My_send_msg, chatInfo);
} } catch (Exception e) {
e.printStackTrace();
ChatInfo chatInfo = new ChatInfo(loginAccountName, download
+ " " + request.getFileName() + " " + fail, time,
true);
sendChatMessage(ChatConstant.My_send_msg, chatInfo);
request.reject();
}
}
}); thread.start();
}