1. 程式人生 > >Android端與服務端基於TCP/IP協議的Socket通訊

Android端與服務端基於TCP/IP協議的Socket通訊

什麼是TCP/IP協議?

百度百科的解釋:Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網路通訊協議,是Internet最基本的協議、Internet國際網際網路絡的基礎,由網路層的IP協議和傳輸層的TCP協議組成。TCP/IP 定義了電子裝置如何連入因特網,以及資料如何在它們之間傳輸的標準。協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。通俗而言:TCP負責發現傳輸的問題,一有問題就發出訊號,要求重新傳輸,直到所有資料安全正確地傳輸到目的地。而IP是給因特網的每一臺電腦規定一個地址。

Wikipedia的解釋:TCP/IP協議,包含了一系列構成網際網路基礎的網路協議。這些協議最早發源於美國國防部的ARPA網專案。TCP/IP模型也被稱作DoD模型(Department of Defense Model)。TCP/IP字面上代表了兩個協議:TCP(傳輸控制協議)和IP(網際協議)。

W3Schools的解釋:

TCP/IP is the communication protocol for communication between computers on the Internet.

TCP/IP stands for Transmission Control P

rotocol / Internet Protocol.

TCP/IP defines how electronic devices (like computers) should be connected to the Internet, and how data should be transmitted between them.

什麼是Socket?

Socket是應用層與TCP/IP協議簇通訊的中間抽象層,Socket是一組介面,在設計模式中,Socket的設計就是門面模式,它把複雜的TCP/IP協議簇的內容隱藏在套接字介面後面,使用者無需關心協議的實現,只需使用Socket提供的介面即可。

Socket的型別有兩種,一種是面向連線的TCP應用服務,一種是面向無連線的UDP(User Data Package)應用服務。通俗的理解就是,TCP方式是打電話(連線性),UDP方式是發簡訊(無連線)。

Ok,以上是簡單的科普,那麼接下來就看下如何在Android上利用TCP/IP協議使用Socket與Server進行通訊吧!今天我們要使用的是面向連線的TCP方式。首先,在本機建立一個Java專案作為Server Client,程式碼如下:

  1. publicclass SocketServer {  
  2.     //監聽埠號
  3.     privatestaticfinalint SERVER_PORT = 12345;  
  4.     publicstaticvoid main(String[] args) {  
  5.         try {  
  6.             System.out.println("Server: Connecting...");  
  7.             ServerSocket serverSocket = new ServerSocket(SERVER_PORT);  
  8.             while (true) {  
  9.                 //迴圈監聽客戶端請求
  10.                 Socket clientSocket = serverSocket.accept();  
  11.                 System.out.println("Server: Receiving...");  
  12.                 try {  
  13.                     //獲取輸入流
  14.                     BufferedReader in = new BufferedReader(  
  15.                             new InputStreamReader(clientSocket.getInputStream()));  
  16.                     //獲取從客戶端發來的資訊
  17.                     String str = in.readLine();  
  18.                     System.out.println("Server: Received: '" + str + "'");  
  19.                 } catch (Exception e) {  
  20.                     System.out.println("Server: Error");  
  21.                     e.printStackTrace();  
  22.                 } finally {  
  23.                     clientSocket.close();  
  24.                     System.out.println("Server: Close.");  
  25.                 }  
  26.             }  
  27.         } catch (Exception e) {  
  28.             System.out.println("Server: Error");  
  29.             e.printStackTrace();  
  30.         }  
  31.     }  
  32. }  

服務端的簡單實現就完成了,接下來新建一個Android客戶端,佈局效果就新增一個Button:


然後是Android客戶端的實現:

  1. publicclass SocketAndrodActivity extends Activity {  
  2.     /** Called when the activity is first created. */
  3. 相關推薦

    TCP/IP協議Socket通訊案例演示

    在伺服器端建立ServerScoket物件,並繫結埠號,用來讓客戶單進行訪問,客戶端建立Socket物件,繫結主機名(由於演示案例是在同一臺電腦上進行,所以主機名用了"localhost")和埠號,伺服器端監聽客戶單,通過輸入流讀取客戶端傳送的請求,輸出流相應客戶端請求。客戶端通過輸出流向伺服器端傳

    Android服務基於TCP/IP協議Socket通訊

    什麼是TCP/IP協議? 百度百科的解釋:Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網路通訊協議,是Internet最基本的協議、Internet國

    python : 通過socketTcp/ip協議實現客戶服務的資料互動

    #服務端 繫結socket 繫結目的ip和埠 建立監聽 建立連線 資料互動 import socket ''' #建立socket :通過server接收 #繫結目的ip和埠號 #設定監聽 #建立連線Socket,Address接收資訊 #資料互

    java客戶服務通訊Tcp/Ip

    Java伺服器與客戶端的連線 客戶端程式 server.java package com.sram.sever; import java.io.BufferedReader; import java.

    基於socket.io客戶服務的相互通訊

    dem send ins 返回 on() .com cal selector req socket.io是對websocket的封裝,用於客戶端與服務端的相互通訊。官網:https://socket.io/。 下面是socket.io的用法: 1、由於使用express

    網路通訊——>TCP協議和UDP協議的客戶服務之間的建立

    網路程式設計 OSI有七層模型:它從低到高分別是:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。如下圖: 網路程式設計的三要素: 1、IP地址 ## 獲取ip地址和主機名的方式 #需要匯入socket模組 import socket name = socket.g

    Android 開發】: Android客戶服務之間使用JSON互動資料。

        在前面的兩講中,我們講解了JSON資料格式的一些基本知識,以及做一些小Demo,這一講我們在前面的基礎上來做一個綜合的可擴充套件的Demo,主要是針對Android客戶端解析服務端傳遞過來的JSON資料。整個Demo所作的操作如下圖所示 1. 服務端    服務端

    java網路程式設計(一)使用TCP協議完成客戶服務的資料傳遞

    在正式進入網路程式設計之前先簡單介紹一個網路程式設計的基本概念。 網路程式設計就是兩個或多個裝置之間的資料交換,其實更具體的說,網路程式設計就是兩個或多個程式之間的資料交換即可以理解為一次網路通訊過程。在網路通訊中,第一次主動發起通訊

    android學習筆記之客戶服務保持session登入狀態

    剛進公司不久,也沒有具體專案任務,只有一個混合開發模式,使用AppCan開發的專案。 雖然混合開發很便捷、很高效,使用html和js就可以完成。 但我依然對android原生開發有著極高的熱情,尤其是在體驗了Android 5.0版本之後,更是對原生體驗著迷。 所以,我利用

    tcp網路程式-客戶服務

    一、tcp客戶端構建流程 tcp的客戶端要比伺服器端簡單很多,如果說伺服器端是需要自己買手機、查手機卡、設定鈴聲、等待別人打電話流程的話,那麼客戶端就只需要找一個電話亭,拿起電話撥打即可,流程要少很多 示例程式碼: from socket import * # 建立socket

    Android 開發】: Android客戶服務之間使用GSON互動資料。

        前面我們有提到google的Gson技術的介紹[GSON 資料格式詳解],這一講我們來詳細學習一下Android客戶端與服務端之間使用GSON進行JSON資料的解析,關於GSON的技術我們已經在前面兩講中提到過,對GSON不瞭解的讀者可以先去看前面兩講的博文,這一講

    利用多執行緒和TCP技術,實現客戶服務之間的通訊

    server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h>

    android移動服務通訊保持Session會話

    移動端在向伺服器請求登入並且登入成功的時候,伺服器的訂單介面需要獲取當前登入的Session,才能夠以當前使用者身份下單,與web端不同,移動端的Session不會自動儲存到web端,每次請求都認為是一次新的請求。因此在移動端只要獲取到當前登入的Session並且記錄下來,在

    Python socket編程客戶服務通信

    eve sock 系統 con conn 綁定 idt 註意 服務 [本文出自天外歸雲的博客園] 目標:實現客戶端與服務端的socket通信,消息傳輸。 客戶端 客戶端代碼: from socket import socket,AF_INET,SOCK_STRE

    Netty入門之客戶服務通信(二)

    ktr 數據格式 lis boot ride owa 參數 val cef Netty入門之客戶端與服務端通信(二) 一.簡介   在上一篇博文中筆者寫了關於Netty入門級的Hello World程序。書接上回,本博文是關於客戶端與服務端的通信,感覺也沒什麽好說的了,直接

    python---》客戶服務的基礎(做一個簡單的客戶服務

    python 今天我們分享的內容是python簡單的客戶端與服務端,此處僅介紹一些簡單的函數,並作出來一個玩兒玩兒。 在開始之前呢,先用一張圖表示他們之間的關系 我們來按照這個步伐依次介紹:服務端:import socketserver=socket.socket()#此處是為了創建

    python--》客戶服務文件的下載

    python在介紹之前,我們需要了解一個加密算法 MD5 校驗和(checksum)通過對接收的傳輸數據執行散列運算來檢查數據的正確性。計算出的散列值拿來和隨數據傳輸的散列值比較。如果兩個值相同,說明傳輸的數據完整無誤、沒有被竄改過(前提是散列值沒有被竄改),從而可以放心使用。 如

    【轉】文件下載之斷點續傳(客戶服務的實現)

    http協議 當前時間 end box [] ada demo 服務端 sem 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 前面講了文件的上傳,今天來聊聊文件的下載。 老規矩,還是從最簡單粗暴的開始。那麽多簡單算簡單

    ssl客戶服務通信的demo

    html 運用 types.h 數據 rom Go LG 使用 line 服務端程序流程 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <errno.h

    使用多線程實現多個客戶服務通信1

    runnable system 處理異常 封裝 端口被占用 直接 客戶端連接 i++ 應用程序 Server.java package socket; import java.io.BufferedReader;import java.io.IOException;impo