手機連線程式範例
手機連線程式範例----------—
這一章,我們將為大家示範簡單的手機連線功能。
首先請看範例一,如下圖:
圖1-1
這是一個最簡單的連線程式,其功能為連上伺服器後,伺服器回傳一行字串”Hello!This is sever msg。”
以下將為各位分別列出手機客戶端與伺服器的完整程式。
範例一:客戶端
專案下載:ClientSocketDemo1.rar
package ccc.ClientSocketDemo1; // 這是命名空間 // 這裡是引用java的類別庫 import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import java.io.BufferedReader; // 引用串流功能 import java.io.IOException; // 引用IO例外功能 import java.io.InputStreamReader; // 引用輸入串流讀取功能 import java.net.InetAddress; // 引用網路IP位址功能 import java.net.Socket; // 引用Socket網路功能 public class ClientSocketDemo1 extends Activity { @Override // 程式進入點 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 文字方塊 TextView TextView01 =(TextView)findViewById(R.id.TextView01); // 用來存放伺服器IP位址的變數 InetAddress serverIp; // 嘗試連接Server try { // 設定IP serverIp = InetAddress.getByName("192.168.60.251"); // 設定port int serverPort=5050; // 初始socket連接 Socket clientSocket=new Socket(serverIp,serverPort); // 接收來自Server的訊息 BufferedReader br=new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 顯示收到的訊息 TextView01.setText( br.readLine()); // 關閉連線 clientSocket.close(); } catch (IOException e) { // 出錯後顯示錯誤訊息 TextView01.setText( "Connect error."); } } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ccc.ClientSocketDemo1" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ClientSocketDemo1" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" /> <!-- 這是註解 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 由於需使用到網路的功能,所以必須加上面這行來取得權限--> </manifest>
範例’一:伺服端
SocketServerDemo1.rar
import java.io.BufferedWriter; // 引用串流功能 import java.io.IOException; // 引用例外功能 import java.io.OutputStreamWriter; // 引用輸出串流功能 import java.net.ServerSocket; // 引用伺服器socket import java.net.Socket; // 引用Socket網路功能 public class SocketServerDemo1 { // 宣告一個靜態的server socket private static ServerSocket serverSocket; // 程式進入點 public static void main(String[] args) { // 設定port int port=5050; // 嘗試Listen一個連線 try { // 初始化Server Socket serverSocket =new ServerSocket(port); // 輸出"伺服器已啟動" System.out.println("Server is start."); // 接受來自客戶端的連線 Socket socket=serverSocket.accept(); // 初始化輸出網路串流 BufferedWriter bw= new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())); // 傳送訊息到客戶端 bw.write("Hello! This is sever msg.\n"); // 立即送出 bw.flush(); } catch (IOException e) { // 如果失敗則顯示"Socket Error" System.out.println("Socket ERROR"); } // 顯示結束連線 System.out.println("Socket is End"); } }
程式影片解說
page revision: 55, last edited: 02 Jun 2011 07:55
你好
想請教一下
我們有按照您的步驟做
所以我們想請問說
如何要手機連線程式 做button連接到自家伺服器的資料庫做新增 移除 修改呢?
謝謝您^^
學到了很多 謝謝
這裡想請問一下假使我傳給client的資料是中文的話
他出來的結果變成了亂碼
請問要怎麼處理呢?
請多指教~~
請問如果 我要讓 手機 自己 當 SEVER呢?
請教老師:
我用Android Studio v1.0 測試這行是OK的,
serverIp = InetAddress.getByName("64.233.187.94");
但是
serverIp = InetAddress.getByName("www.google.com.tw");
就一直出錯…
Best Regards,
Steve
Post preview:
Close preview