1. 程式人生 > >Android的Socket通訊程式設計例項

Android的Socket通訊程式設計例項

Android手機的應用,除了它的手機功能之外,另外一個吸引人的地方在於它的開放性,這一點iphone無法比擬,至少iphone太多商業化氣息。android為我們開啟另一扇交流之窗,而要實現交流,socket通訊必不可少。

java在socket通訊方面上已經有了很好的範例,我只是拋磚引玉,將其引入到android之中,疏漏之處在所難免,很多地方也值得深思與考量,高手不必拍磚,可跳過此文。下面,用敲門的方式演示Android如何實現套接字的通訊。

伺服器程式

伺服器程式需要在PC上執行,該程式比較的簡單,因此不需要建立Android專案,直接定義一個JAVA類,並且執行該類即可。它僅僅建立ServerSocket監聽,並使用Socket獲取輸入輸出流。

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleServer {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        //建立一個ServerSocket,用於監聽客戶端socket的連線請求
        ServerSocket ss=new ServerSocket(30000);
        //採用迴圈不斷接受來自客戶端的請求,伺服器端也對應產生一個Socket
        while(true){
            Socket s=ss.accept();
            OutputStream os=s.getOutputStream();
            os.write("您好,您收到了伺服器的新年祝福!n".getBytes("utf-8"));
            os.close();
            s.close();
    }

    }}

客戶端程式

package my.learn.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

public class SimpleClient extends Activity {
    private EditText show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        show = (EditText) findViewById(R.id.show);

        try {

            Socket socket = new Socket("自己計算機的IP地址", 30000);
            //設定10秒之後即認為是超時
            socket.setSoTimeout(10000);
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    socket.getInputStream()));
            String line = br.readLine();

            show.setText("來自伺服器的資料:"+line);

            br.close();
            socket.close();

        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            Log.e("UnknownHost", "來自伺服器的資料");
            e.printStackTrace();
        } catch (IOException e) {
            Log.e("IOException", "來自伺服器的資料");
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

需要注意的是,在Manifest.xml檔案當中,需要對網際網路的訪問進行授權。
<uses-permission  android:name="android.permission.INTERNET"/>



相關推薦

Android的Socket通訊程式設計例項

Android手機的應用,除了它的手機功能之外,另外一個吸引人的地方在於它的開放性,這一點iphone無法比擬,至少iphone太多商業化氣息。android為我們開啟另一扇交流之窗,而要實現交流,socket通訊必不可少。 java在socket通訊方面上已經有了很

java網路程式設計:12、基於UDP的socket程式設計(二)程式碼通訊-簡單例項

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於UDP伺服器端程式的編寫 二、基於UDP客戶端程式的編寫 三、系列文章(java網路程式設計) 通過上篇文章瞭解了基於UDP通訊的理論、基本步驟以及它跟TCP的區別

【Linux】程序間通訊-訊號量詳解及程式設計例項

前面一篇文章執行緒同步之訊號量同步 講的是執行緒之間的訊號量,這篇講的更加具有通用性,能夠實現程序之間的同步。 訊號量概述 訊號量定義: 它是一個特殊變數,只允許對它進行等待和傳送訊號這兩種操作。 P(訊號量變數sv):等待。如果sv大於0,減小sv。如果sv為0,掛起這

程序間通訊--訊號量詳解及程式設計例項

訊號量概述 訊號量定義: 它是一個特殊變數,只允許對它進行等待和傳送訊號這兩種操作。 P(訊號量變數sv):等待。如果sv大於0,減小sv。如果sv為0,掛起這個程序的執行。V(訊號量變數sv):傳送訊號。如果有程序被掛起等待sv,使其恢復執行。如果沒有進行被掛起等待sv

利用C#進行Socket通訊程式設計之二:一個例項

    利用晚上這點閒暇時間,寫了一個Socket通訊的小例項,該例項包含伺服器端和客戶端。其基本工作流程是:當伺服器啟動服務以後,客戶端進行連線,如果連線成功,則使用者可以在傳送訊息框中輸入待發送的訊

程序間通訊-訊號量詳解及程式設計例項

前面一篇文章執行緒同步之訊號量同步 講的是執行緒之間的訊號量,這篇講的更加具有通用性,能夠實現程序之間的同步。 訊號量概述 訊號量定義: 它是一個特殊變數,只允許對它進行等待和傳送訊號這兩種操作。 P(訊號量變數sv):等待。如果sv大於0,減小sv。如果sv為0,掛

門禁系統socket通訊程式設計

最近遇到一個socke udp協議通訊的需求,而且是16進位制資料接收。這樣在傳輸引數的時候老是提示引數錯誤,因為計算機是不能直接傳輸16進位制的,會自行轉換,所有以下程式碼非常完美的解決我的問題,同時也讓我認識到並不是所有socket都是需要一個客戶端和服務端程式碼 <?php  &nbs

shell及程式設計例項

1.shell簡介   1) 概念--命令直譯器 2) 常見shell bash linux標準shell sh 早期shell,較簡單 csh ksh tcsh unix  shell vi  /etc/shells linux支援的s

《精通Windows.API-函式、介面、程式設計例項》範文慶.掃描版.pdf

書籍簡介: 《精通Windows API:函式、介面、程式設計例項》共18章,分為3個部分,第1部分(第1章-第3章)介紹Windows程式設計基礎;第2部分(第4章-第17章)按照程式設計的各個方面進行劃分,包括檔案系統、記憶體管理、程序與執行緒、使用者介面、Shell程式開發、Wind

ubuntu16.04下ROS作業系統學習(四 / 二)ROS基礎-ROS通訊程式設計

1.話題程式設計 首先我們要有一個釋出話題的Talker,還要有一個訂閱話題的Listener,然後就是負責管理整個系統的ROS Master。 話題程式設計的流程主要是以下四個步驟: 建立釋出者 建立訂閱者 新增編譯選項 執行可執行程式 上面的前兩

shell基礎程式設計例項

shell  程式設計 例項 案例:   字串擷取  ? 使用 ${}  怎麼做 擷取? [[email protected] ~]# SCHOOL="Tarena IT Group." [[email 

SpringBoot 通過自定義註解實現AOP切面程式設計例項

一直心心念的想寫一篇關於AOP切面例項的博文,拖更了許久之後,今天終於著手下筆將其完成。 基礎概念 1、切面(Aspect) 首先要理解‘切’字,需要把物件想象成一個立方體,傳統的面向物件變成思維,類定義完成之後(封裝)。每次例項化一個物件,對類定義中的成員變數賦值,就相當於對這個立方體進行了一個定義,

JNI入門教程1---Android studio 下JNI程式設計例項並生成so庫

參考地址: https://www.cnblogs.com/jymblog/p/5526865.html                   https://www.jianshu.com/p/a

Golang Socket 程式設計例項

服務端程式: package main import ( "net" "fmt" "strings" ) func handle(conn net.Conn) { defer conn.Close() buf := make([]byte, 2048) for { n,

java基礎總結(三十二)--java多執行緒程式設計例項

來自:https://blog.csdn.net/qq_34996727/article/details/80416277或者https://www.cnblogs.com/pureEve/p/6524366.html 一.相關知識:   Java多執行緒程式設計到的知識:

相機採集影象並顯示,程式流程圖,與程式設計例項

      /*影象抓取執行緒,主動呼叫SDK介面函式獲取影象*/ UINT CBasicDlg::GrabThread() { tSdkFrameHead sFrameInfo; BYTE* pRawBuffer; // CameraSetTr

利用WinAPI進行串列埠通訊程式設計

轉載於:https://blog.csdn.net/L_Andy/article/details/51131232 轉載只為了方便查詢,希望大家從源連線進行檢視! 總結來看串列埠通訊原理,(也可以說大多數通訊原理也是如此)。 通訊首先要有個通訊,可以簡單的把通訊看成一個

符合psr-1,2的程式設計例項

<?php namespace phpspider; abstract class Solier { /** * 描述 * * @var string */ const THIS_IS_A_CONST = ''; // 常量全部大寫

c#的串列埠通訊簡單例項

---本人是一名小白,最近在做學校有關通訊的專案。在寫這份程式碼之前,查看了許多參考程式碼。如果我有說的不對的地方,還請大家指出來。 工具:串列埠助手、串列埠除錯助手、編譯器(我用的vs2017)//完整程式碼和除錯助手 在文末有連結 一、效果圖 首先給大家放一張效果圖。 二、

大資料之Hadoop學習——動手實戰學習MapReduce程式設計例項

文章目錄 一、MapReduce程式設計例項 1.自定義物件序列化 需求分析 報錯:Exception in thread "main" java.lang.IllegalArgumentExcept