1. 程式人生 > >android_專案_知識積累_mina通訊(android手機登入功能)

android_專案_知識積累_mina通訊(android手機登入功能)

   前一篇文章實現了簡單的mina伺服器端與客戶端通訊,這篇文章我們要實現android手機上的登入功能。android的應用層語言是java,所以要把前一篇文章的程式改成android版本的也不難。接下來我們來看具體的實現:

  伺服器端:

和前面一篇文章的一樣就可以了,這裡不多說了,詳細請看android_專案_知識積累_mina通訊(java程式簡單通訊)。然後這裡我們要做的就是把前一篇文章的客戶端搬到android手機上來。

        程式碼如下:

package com.example.android_mina_client;

import java.net.InetSocketAddress;
import java.net.SocketAddress;

import org.apache.mina.core.filterchain.IoFilter;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.button1).setOnClickListener(
				new android.view.View.OnClickListener() {

					@Override
					public void onClick(View arg0) {
						// TODO Auto-generated method stub
						final EditText t1 = (EditText) findViewById(R.id.editText1);
						final EditText t2 = (EditText) findViewById(R.id.editText2);
						if ("".equals(t1.getText().toString()) || "".equals(t2.getText().toString())) {
							Toast.makeText(MainActivity.this, "使用者名稱和密碼均不能為空!",
									Toast.LENGTH_LONG).show();
						} else {
							// login
							new Thread(){

								@Override
								public void run() {
									// TODO Auto-generated method stub
									super.run();
									login(t1.getText().toString(),t2.getText().toString());
								}
								
							}.start();
						}
					}
				});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	private void login(String username,String userpasswd) {
		SocketConnector connector = new NioSocketConnector();
		IoFilter filter = new ProtocolCodecFilter(new TextLineCodecFactory());
		connector.getFilterChain().addLast("gzm", filter);
		SocketAddress soketAddress = new InetSocketAddress("192.168.80.105", 5333);//這裡我用的區域網,我的電腦的IP是192.168.80.105
connector.setHandler(new ClientHandler()); ConnectFuture future = connector.connect(soketAddress); future.join(); if (!future.isConnected()) { System.out.println("連線伺服器失敗!"); return; } future.getSession().write(username+","+userpasswd); } }

其中的ClientHandler類依然不變,和上一篇文章的一樣:
package com.example.android_mina_client;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class ClientHandler extends IoHandlerAdapter {
	
	public void messageReceived(IoSession arg0, Object message) throws Exception {
		System.out.println("伺服器發來訊息:" + message.toString());
	}

	public void exceptionCaught(IoSession arg0, Throwable arg1)
			throws Exception {

	}
}

整個android工程的結構如下圖:


先執行伺服器端,然後再執行android客戶端,實現的效果如下:



相關推薦

android_專案_知識積累_mina通訊(android手機登入功能)

   前一篇文章實現了簡單的mina伺服器端與客戶端通訊,這篇文章我們要實現android手機上的登入功能。android的應用層語言是java,所以要把前一篇文章的程式改成android版本的也不難。接下來我們來看具體的實現:   伺服器端: 和前面一篇文章的一樣就可以了

android-手機登入介面嘗試獲取手機號碼,並可選擇雙卡雙待subscriptionId

LogonActivity.java public class LogonActivity extends Activity { private EditText nickET; private EditText passwordET; private E

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案 (16)原始碼分享二:登入功能以及UI、資料庫、倉儲原始碼分享

1 using Common; 2 using Service.IService; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Web;

Android實現登入功能Android與伺服器資料互動,使用tomcat、mysql實現登入的demo程式,web端和android均可實現登入

1.使用到的開發工具為:Eclipse(Java EE),Android Studio,MYSQL 5.7.21;2.首先在MYSQL資料庫建表,我這裡使用的資料庫視覺化操作軟體為:navicat premium:如圖:這裡你可以取自己喜歡的資料庫名字,但是為了方便起見,我建

Android Studio 登入功能實現

LoginActivity.java 包 com.hyx.example.mymap; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; imp

知識積累--linux--下安裝nodejs--執行window下編譯過的專案

前景提要:       在本地windows環境下,做了一個專案,需要使用nodeJs環境,於是乎本地安裝了下nodeJs也配置了環境變數,專案執行著也沒有問題,現要將專案部署到linux的線上環境,在安裝nodeJS和執行npm run build,npm run

Android專案架構--知識體系簡單梳理(一)

Android專案結構按模組module來劃分 lib_base:包含各種Base基類,如 BaseActivty、BaseFragment、BaseApplication,這是一些專案的開始基礎。

eclipse知識積累(3-1)查找關鍵字

earch images ips 菜單 com 搜索 cte 知識 ges 1、選擇資源目錄->選擇search-file菜單 2、在彈出的對話框中, 輸入要【搜索的字符串】,選擇【selected resources】,點擊【search】按鈕 3、 e

知識積累

如果 運算 成員 ava print 類型提升 system 數據 lin public class HelloWorld{   public static void main(String []args){       System.out.println("He

java基礎知識積累總結

發生 數據 相互轉換 移動智能終端 產生 包含 dep while 順序 參考:http://www.importnew.com/22083.html 參考:http://www.importnew.com/22087.html 十分感謝原作者的匯總,我在這個基礎上,有所改

qml 知識積累

html 知識 www AI 漸變 edi ron 基本介紹 基本 本文僅僅只是記錄,怕日後遺忘。 ListView相關應用 https://www.cnblogs.com/SaveDictator/p/8192391.html ListView 清空操作 https://

機器學習數學知識積累

不同 組合 取出 自然 排列 span 組合數 元素 col 排列與組合 排列的定義 從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的一個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,

機器學習知識積累

特征 回歸 blog .com cnblogs .html 歸一化 判別模型 native 判別模型(discriminative) vs生成模型(generative) 邏輯回歸算法簡單,對特征工程的要求就非常高。必須做特征歸一化,否則各特征重要程度不一。 http:/

UE4 集成 Wwise 插件知識積累

lib 進行 mesh strong anim 了解 全局 基礎知識 dex 本博文默認認為讀者已經有一定的Wwise、Unreal知識基礎,重點是總結一些原理及代理流程,並沒有過多介紹基本使用,如果需要了解相關基礎知識可以查看博文最後的“相關文檔鏈接” 在Montage

SolidWorks知識積累系列-01

spl ott 簡單 基本 平移 ica 直接 圖形 技術 Solidworks學習 1. 基本知識點總結 基準視圖 主視圖:從前往後看,前視基準 俯視圖:從上往下看,上視基準 側視圖:從右向左看,右視基準 草圖要求 單封閉性,草圖要依附於某個位置

數學知識-積累與發現

概率與統計 基礎 概率論-wiki 資料探勘中所需的概率論與數理統計知識 先驗概率與後驗概率 PR曲線、ROC曲線和AUC 詳解最大似然估計(MLE)、最大後驗概率估計(MAP),以及貝葉斯公式的理解 MLE隱含了引數取任何值的概率都一樣,而MAP則考慮到了引數取不同值的

結構化機器學習專案_課程筆記_第一、二週

第一週 機器學習策略_1 這一門課主要介紹了在具體專案實踐中會遇到的一些問題以及採取的策略。所擷取的圖片依然來源於吳恩達老師的相關視訊資源。 1. 正交化(Orthogonalization) Andrew建議機器學習的調參過程應保持正交化。上圖所示的機器學習的4個流程,每一步的除

史上最全的NB-IoT知識,每個通訊人都應該瞭解的

通常,我們把物聯網裝置分為三類:   ①無需移動性,大資料量(上行),需較寬頻段,比如城市監控攝像頭。   ②移動性強,需執行頻繁切換,小資料量,比如車隊追蹤管理。   ③無需移動性,小資料量,對時延不敏感,比如智慧抄表。   NB-IoT正是為了應對第③種物聯網裝置而生。   NB-Io

unity3D匯出的專案如何植入到已經有的android studio中

第一步 拿到unity3d專案,裡面包含以下檔案 第二步 在android studio下開始植入到您的專案中,我這邊是個demo 第三步 將unity3d專案目錄下的libs下的jar檔案複製黏貼到android stud

專案瑣碎知識(二)

(一) 同源策略   如果請求的協議://域名:埠號 都相同則滿足同源策略,可以互相呼叫     (二)JSONP和httpClient的區別   1. 請求傳送的解析位置的不同       JSONP:是瀏覽器解析AJAX發起的請求