導航:首頁 > 操作系統 > openfireandroid客戶端

openfireandroid客戶端

發布時間:2022-05-30 05:32:18

android端怎麼接收openfire伺服器發送過來的消息

⑵ android 用openfire做伺服器,smack來連接怎麼連接不上

android客戶端接收 openfire 伺服器發送來的消息:

客戶端代碼如下:

Java代碼

packagecom.example.openfiretest;

importorg.jivesoftware.smack.Chat;

importorg.jivesoftware.smack.ChatManager;

importorg.jivesoftware.smack.ChatManagerListener;

importorg.jivesoftware.smack.ConnectionConfiguration;

importorg.jivesoftware.smack.MessageListener;

importorg.jivesoftware.smack.XMPPConnection;

importorg.jivesoftware.smack.packet.Message;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.view.Menu;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.Window;

importandroid.widget.CheckBox;

importandroid.widget.EditText;

importandroid.widget.Toast;

{

;

;

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

accountEditText=(EditText)findViewById(R.id.username);

passwordEditText=(EditText)findViewById(R.id.password);

findViewById(R.id.login).setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewv){

Stringaccount=accountEditText.getText().toString();

Stringpassword=passwordEditText.getText().toString();

if(account.equals("")||password.equals("")){

Toast.makeText(MainActivity.this,"賬號或密碼不能為空!",

Toast.LENGTH_SHORT).show();

}else{

ClientConServerccs=newClientConServer(MainActivity.this);

booleanb=ccs.login(account,password);

//如果登錄成功

if(b){

Toast.makeText(MainActivity.this,"登陸成功!",

Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(MainActivity.this,"登陸失敗!",

Toast.LENGTH_SHORT).show();

}

}

}

});

}

}

然後在登陸以後添加一個監聽消息的監聽器,用來監聽收到的消息(代碼89、90行):

Java代碼

packagecom.example.openfiretest;

importjava.util.Collection;

importorg.jivesoftware.smack.Chat;

importorg.jivesoftware.smack.ChatManager;

importorg.jivesoftware.smack.ChatManagerListener;

importorg.jivesoftware.smack.ConnectionConfiguration;

importorg.jivesoftware.smack.MessageListener;

importorg.jivesoftware.smack.Roster;

importorg.jivesoftware.smack.RosterEntry;

importorg.jivesoftware.smack.RosterGroup;

importorg.jivesoftware.smack.XMPPConnection;

importorg.jivesoftware.smack.XMPPException;

importorg.jivesoftware.smack.packet.Message;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Handler;

importandroid.util.Log;

importandroid.widget.Toast;

publicclassClientConServer{

privatestaticintPORT=5222;

privateContextcontext;

publicClientConServer(Contextcontext){

this.context=context;

}

//這里收到消息後,通過廣播將消息發送到需要的地方.哈哈,既然收到了伺服器發送來的信息,如何處理自己決定。

privateHandlerhandler=newHandler(){

publicvoidhandleMessage(android.os.Messagem){

Messagemsg=newMessage();

msg=(Message)m.obj;

//把從伺服器獲得的消息通過廣播發送

Intentintent=newIntent("org.yhn.mes");

String[]message=newString[]{

msg.getFrom(),

msg.getBody()};

System.out.println("==========收到伺服器消息From==========="+message[0].toString());

System.out.println("==========收到伺服器消息Body==========="+message[1].toString());

intent.putExtra("message",message);

context.sendBroadcast(intent);

};

};

publicbooleanlogin(Stringa,Stringp){

ConnectionConfigurationconfig=newConnectionConfiguration("192.168.0.124",PORT);

/**是否啟用安全驗證*/

config.setSASLAuthenticationEnabled(false);

/**是否啟用調試*/

//config.setDebuggerEnabled(true);

/**創建connection鏈接*/

XMPPConnectionconnection=newXMPPConnection(config);

try{

/**建立連接*/

connection.connect();

/**登錄*/

connection.login(a,p);

/**開啟讀寫線程,並加入到管理類中*/

//ClientSendThreadcst=newClientSendThread(connection);

//cst.start();

//ManageClientThread.addClientSendThread(a,cst);

//獲取用戶組、成員信息。

System.out.println("======開始獲取組及用戶==========");

Rosterroster=connection.getRoster();

Collection<RosterGroup>entriesGroup=roster.getGroups();

System.out.println("組的個數:"+entriesGroup.size());

for(RosterGroupgroup:entriesGroup){

Collection<RosterEntry>entries=group.getEntries();

System.out.println("=========groupName==="+group.getName());

for(RosterEntryentry:entries){

//Presencepresence=roster.getPresence(entry.getUser());

//Log.i("---","user:"+entry.getUser());

System.out.println("組成員名字:"+entry.getName());

//Log.i("---","tyep:"+entry.getType());

//Log.i("---","status:"+entry.getStatus());

//Log.i("---","groups:"+entry.getGroups());

}

}

System.out.println("======結束獲取組及用戶==========");

//在登陸以後應該建立一個監聽消息的監聽器,用來監聽收到的消息:

ChatManagerchatManager=connection.getChatManager();

chatManager.addChatListener(newMyChatManagerListener());

returntrue;

}catch(XMPPExceptione){

e.printStackTrace();

}

returnfalse;

}

/**messagelistener*/

{

publicvoidchatCreated(Chatchat,booleanarg1){

chat.addMessageListener(newMessageListener(){

publicvoidprocessMessage(Chatarg0,Messagemsg){

/**通過handler轉發消息*/

android.os.Messagem=handler.obtainMessage();

m.obj=msg;

m.sendToTarget();

}

});

}

}

}

啟動android客戶端,進行登錄

然後在openfire的管理控制台,會話-工具中發送消息給所有在線用戶

即可看到列印信息:在管理控制台發送的消息

⑶ openfire怎麼實現androi推送 還需要用到哪些東西

1、定期查詢:間隔特定時間查詢資料庫,有新消息時顯示。優點:實現起來簡單;缺點:實時性不夠好,對於移動客戶端耗電量太大;
2、通過socket推送:建立一個長連接,一有新消息就發送給客戶端。在區域網內沒問題,但是跨網時客戶端一直無法收到消息;
3、通過短息推送:這個一般有人賣簡訊發送介面的,但是比較費錢
4、長輪詢:基本上與目前很多網站使用的方式一樣(WEB阿里旺旺、微博、人人等等)。客戶端發起一個很長超時時間的請求,然後伺服器端在沒有消息的時候阻塞這個請求(一直不給返回值)直到快要超時為止,有消息到來再返回響應。客戶端收到響應或超時後立即再發起請求。

⑷ android studio怎麼使用openfire

Android studio為我們提供了git的插件,讓我們能夠很好的進行版本控制,這篇blog我們就來展示一下如何使用(操作系統是win7)。
准備,下載window上的git, 下載地址 ;在studio中設置git插件:File->Setting->Version Control->Git, 然後可以點擊Test測試一下,如下圖:那麼你就設置成功了。

2.初始化git項目(git init),操作如下:VCS->Enable Control Integration->Select "Git".
3.為git添加remote,在這一步中,studio沒有為我們提供可視化的GUI,得用Git工具了。找到並打開git安裝目錄下面的Git Bash,將目錄切換到項目的目錄,然後輸入git添加remote的命令,例如:git remote add origin "https://github.com/xxx/xxx.git".
4.將代碼添加到VCS(git add),選中要提交的文件->VCS->Git->Add,

⑸ 我用eclipse寫的android聊天軟體連接不到本地openfire,初始配置都是從網上參考的,就是不行,

填你的電腦的ip,別用127.0.0.1,這個表示Android自己本機

⑹ 基於Openfire+XMPP下通過asmack開發Android端的即時通訊APP方法與步奏

有相應的文檔和demo。文檔連接發泥私信了,具體demo其實也有現成的,用到的類有限不是很多。

⑺ android openfire remote-server-not-found怎麼解決

android openfire remote-server-not-found怎麼解決
android客戶端接收 openfire 伺服器發送來的消息:
客戶端代碼如下:
Java代碼
package com.example.openfiretest;

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ChatManagerListener;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Message;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

private EditText accountEditText;
private EditText passwordEditText;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
accountEditText = (EditText) findViewById(R.id.username);
passwordEditText = (EditText) findViewById(R.id.password);

findViewById(R.id.login).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String account = accountEditText.getText().toString();
String password = passwordEditText.getText().toString();
if (account.equals("") || password.equals("")) {
Toast.makeText(MainActivity.this, "賬號或密碼不能為空!",
Toast.LENGTH_SHORT).show();
} else {
ClientConServer ccs = new ClientConServer(MainActivity.this);
boolean b = ccs.login(account, password);
// 如果登錄成功

⑻ openfire 和androidpn哪個好些

目前來看相對openfire來說安卓更為主流:
1、Openfire 採用Java開發,開源的實時協作(RTC)伺服器基於XMPP(Jabber)協議。Openfire安裝和使用都非常簡單,並利用Web進行管理。單台伺服器可支持上萬並發用戶。
2、Android(['ændrɔid])是一個以Linux為基礎的半開源操作系統,主要用於移動設備,由Google和開放手持設備聯盟開發與領導。 Android 系統最初由安迪·魯賓(Andy Rubin)製作,最初主要支持手機。2005年8月17日被Google收購。2007年11月5日,Google與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統並生產搭載Android的智慧型手機,並逐漸拓展到平板電腦及其他領域上。隨後,Google以Apache免費開源許可證的授權方式,發布了Android的源代碼。

⑼ 如何寫一個MQTT連接的android客戶端

MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。 我們可以從這里下載該項目的實例代碼,並且可以找到一個採用php書寫的伺服器端實現。 架構如下所示: wmqtt.jar 是IBM提供的MQTT協議的實現。你可以從如下站點下載它。你可以將該jar包加入你自己的Android應用程序中。 Really Small Message Broker (RSMB) ,他是一個簡單的MQTT代理,同樣由IBM提供。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。 SAM是一個針對MQTT寫的PHP庫。你可以從這個下載它. send_mqtt.php是一個通過POST接收消息並且通過SAM將消息發送給RSMB的PHP腳本。 實例代碼: Ø 採用XMPP協議實現Android推送 這是我在項目中採用的方案。事實上Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。 XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。 androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。經過源代碼研究我發現,該伺服器端基本是在另外一個開源工程openfire基礎上修改實現的,不過比較郁悶的是androidpn的文檔是由韓語寫的,所以整個研究過程基本都是讀源碼。它的實現示意圖如下: androidpn客戶端需要用到一個基於java的開源XMPP協議包asmack,這個包同樣也是基於openfire下的另外一個開源項目smack,不過我們不需要自己編譯,可以直接把androidpn客戶端裡面的asmack.jar拿來使用。客戶端利用asmack中提供的XMPPConnection類與伺服器建立持久連接,並通過該連接進行用戶注冊和登錄認證,同樣也是通過這條連接,接收伺服器發送的通知。 androidpn伺服器端也是java語言實現的,基於openfire開源工程,不過它的Web部分採用的是spring框架,這一點與openfire是不同的。Androidpn伺服器包含兩個部分,一個是偵聽在5222埠上的XMPP服務,負責與客戶端的XMPPConnection類進行通信,作用是用戶注冊和身份認證,並發送推送通知消息。另外一部分是Web伺服器,採用一個輕量級的HTTP伺服器,負責接收用戶的Web請求。伺服器架構如下: 最上層包含四個組成部分,分別是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager負責管理客戶端與伺服器之間的會話,Auth Manager負責客戶端用戶認證管理,Presence Manager負責管理客戶端用戶的登錄狀態,NotificationManager負責實現伺服器向客戶端推送消息功能。 伺服器端界面如下,分別對應了上述的幾個功能模塊: 發送以後,我們可以在手機端看到接收的消息:

閱讀全文

與openfireandroid客戶端相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:27
不能修改的pdf 瀏覽:751
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491