五、Android區域網多播(組播)
多播
組播使用UDP對一定範圍內的地址傳送相同的一組Packet,即一次可以向多個接受者發出資訊,其與單播的主要區別是地址的形式。IP協議分配了一定範圍的地址空間給多播(多播只能使用這個範圍內的IP),IPv4中組播地址範圍為224.0.0.0到239.255.255.255
傳送端
package com.turing.mobilecontrol;
import java.io.IOException;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
public class MobileSocketClient {
private static MobileSocketClient mobileSocketClient = null;
private static String BROADCAST_IP = "224.0.0.1" ;
private static int BROADCAST_PORT = 9898;
private static final String TAG = "MobileSocketClient";
private MulticastSocket multicastSocket;
private InetAddress inetAddress;
private Handler handler;
private MobileSocketClient() {
try {
//初始化組播
inetAddress = InetAddress.getByName(BROADCAST_IP);
multicastSocket = new MulticastSocket(BROADCAST_PORT);
multicastSocket.setTimeToLive(1);
multicastSocket.joinGroup(inetAddress);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void init(Handler handler) {
this.handler = handler;
}
public static MobileSocketClient getInstance() {
if (mobileSocketClient == null) {
mobileSocketClient = new MobileSocketClient();
}
return mobileSocketClient;
}
//傳送資料
public void send(final String content) {
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... paramVarArgs) {
byte[] data = paramVarArgs[0].getBytes();
//構造要傳送的資料
DatagramPacket dataPacket = new DatagramPacket(data,
data.length, inetAddress, BROADCAST_PORT);
try {
multicastSocket.send(dataPacket);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return App.getInstance().getResources()
.getString(R.string.send_failed);
}
return App.getInstance().getResources()
.getString(R.string.send_success);
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Message msg = new Message();
msg.what = TuringHandler.STATUS;
msg.obj = result;
handler.sendMessage(msg);
}
}.execute(content);
}
}
接收端
package com.tuling.demo.socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.tuling.demo.TuringHandler;
public class ServerSocket extends Thread {
private static final String TAG = TuringServerSocket.class.getSimpleName()
.toString();
private static int BROADCAST_PORT = 9898;
private static final String BROADCAST_IP = "224.0.0.1";
private MulticastSocket multicastSocket;
String content = "";
private Handler handler;
private InetAddress inetAddress;
public TuringServerSocket(Handler handler) throws IOException {
// 多播配置
multicastSocket = new MulticastSocket(BROADCAST_PORT);
inetAddress = InetAddress.getByName(BROADCAST_IP);
multicastSocket.joinGroup(inetAddress);
// handler
this.handler = handler;
}
@Override
public void run() {
while (true) {
Log.d(TAG, "run");
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length,
inetAddress, BROADCAST_PORT);
try {
multicastSocket.receive(dp);
String content = new String(buf, 0, dp.getLength());
Message msg = new Message();
msg.what = TuringHandler.RECEIVE_COMMOND;
msg.obj = content;
handler.sendMessage(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
}
}
相關推薦
五、Android區域網多播(組播)
多播 組播使用UDP對一定範圍內的地址傳送相同的一組Packet,即一次可以向多個接受者發出資訊,其與單播的主要區別是地址的形式。IP協議分配了一定範圍的地址空間給多播(多播只能使用這個範圍內的IP),IPv4中組播地址範圍為224.0.0.0到239.
android multicast 多播(組播)問題
有誰遇到過同樣問題的可以探討下,或者已經解決問題的,能夠指導下我 獲取組播鎖 private InetAddress group; WifiManager wm=(WifiMan
多播(組播)原理分析
為什麼要使用多播: 網卡從網路上接收到目標實體地址對應的所有bit位都為1的資料報時,會收到這條訊息並將其上傳給驅動程式,網絡卡的這種工作模式稱為廣播模式,網絡卡的預設工作模式包含直接模式和廣播模式。利用這一特性,UDP(使用者資料報協議)還提供了向多個目標
ZStack單播組播廣播具體操作與原理資料整理
// Register the endpoint description with the AF afRegister( &GenericApp_epDesc ); 3.在需要傳送資料的地方,執行如下程式碼: if ( AF_DataRequest( &GenericApp_DstAddr,
三十五、java學習--多執行緒程式設計
Java 多執行緒程式設計 Java 給多執行緒程式設計提供了內建的支援。 一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。 多執行緒是多工的一種特別的形式,但多執行緒使用了更小的資源開銷。 這裡定義和執行緒相關的
五、Android安全機制之反編譯(你也可以擁有iPhone X)
Android應用的反編譯需要了解smali,熟練使用常用的反編譯工具。比如apktool,Jd-jui,dex2jar,Android逆向助手,AXMLPrinter2,jadx,Xposed,IDA,APK改之理,AndroidKiller以及一些adb、aapt
linux udp 單播 組播 廣播實現
前面介紹的TCP/IP知識都是基於單播,即一對一的方式,本節介紹一對多的廣播方式。廣播是由一個主機發向一個網路上所有主機的操作方式。例如在一個區域網內進行廣播,同一子網內的所有主機都可以收到此廣播發送的資料。 11.2.1 廣播的IP地址 要使用廣播,需要了解IPv4特定的廣播
單播、廣播、組播、多播
交換機 電子 orm 數據流 優點 網上 size qos 電視機 組播=多播 單播、組播、廣播是網絡中結點的3種通訊方式。 1、單播 1)定義: 主機之間一對一的通訊模式。網絡中的交換機和路由器對數據只轉發,不復制。網絡中的路由器和交換機根據目標地址選擇傳輸路徑。
淺談Android中的組播(多播)
-1 ip協議 strong 多個 接受 端口 ui線程 nbsp 數據 組播使用UDP對一定範圍內的地址發送相同的一組Packet,即一次可以向多個接受者發出信息,其與單播的主要區別是地址的形式。IP協議分配了一定範圍的地址空間給多播(多播只能使用這個範圍內
單播、多播(組播)和廣播的區別
本文來自百度文庫的一篇文件,放在部落格供自己和各位朋友學習和了解 單播”(Unicast)、“多播”(Multicast)和“廣播”(Broadcast)這三個術語都是用來描述網路節點之間通訊方式的術語。那麼這些術語究竟是什麼意思?區別何在? 1.單播:網路節點之間的通
Java UDP 單播、多播(組播)、廣播、任播(未實現)
單播、組播、廣播、任播的定義 單播(unicast): 是指封包在計算機網路的傳輸中,目的地址為單一目標的一種傳輸方式。它是現今網路應用最為廣泛,通常所使用的網路協議或服務大多采用單播傳輸,例如一切基於TCP的協議。 組播(multicast
MAC地址(單播、廣播、組播、數據收發)
制造商 局域網 對比 地址 方式 傳輸 eid type 但是 MAC地址 網絡設備的MAC地址是全球唯一的。MAC地址長度為48比特,通常用十六進制表示。MAC地址包含兩部分:前24比特是組織唯一標識符(OUI,OrganizationallyUniqueIdent
單播,組播(多播),廣播以及任播
pac 視頻 rsvp 使用 blank 缺點 ron ssa 處理 目錄 [+] 單播(unicast): 是指封包在計算機網絡的傳輸中,目的地址為單一目標的一種傳輸方式。它是現今網絡應用最為廣泛,通常所使用的網絡協議或服務大多采用單播傳輸,例如一切基於TCP的協議
鏈路內和鏈路外的數據包發送:單播、組播、任播
存在 sse ast 比特 inf 正常 ip組播 nan root 翻譯自:https://info.menandmice.com/blog/bid/103274/On-link-vs-Off-Link-Packet-Delivery-Unicast-Multicast-
網路基本概念之TCP, UDP, 單播(Unicast), 多播(組播)(Multicast)
這篇文章相當低階,但相當重要! 我們周圍一切幾乎都依賴於把事情抽象成低等級,並在某一點把它具體化,在一些設計概念中,介面層十分清晰並且目標很集中,應用程式不用考慮作業系統如何工作,作業系統也不用考慮硬體如何工作,OSI模型的第4層不需要考慮第三層如何工作。所以我們只需要集中精力在某一
java 實現區域網多播
要想用java程式設計實現傳送多播資訊,需要經歷幾個基本的程式設計步驟。能完成以下這幾步,就是可以用Java程式來實現多播資訊的傳送。 (1)確定傳送訊息的具體內容; String msg="hello";
Android實現MP4邊下邊播(邊快取邊播放、線上播放)原理與程式碼
QQ群交流:425219113(計算機語言交流) 邊下邊播方法初試 **剛開始實現這個的時候,我第一下想到的是:**先將MP4檔案單純的從位元組的層次分為若干個檔案,然後播放的時候,不斷從伺服器一邊下載,一邊追加到一個原始檔裡面,最後直接播放這個原始檔就可
WIFI專案--【Java TCP/IP Socket】 — 單播、廣播、組播
在當前網路通訊中(TCP/IP也不例外)有三種通訊模式:單播、廣播、組播(又叫多播, 個人感覺叫多播描述的有點不恰當),其中多播出現的時間最晚,但同時具備單播和廣播的優點,最具有發展前景。 通訊方式分類: 1.單播:單臺主機與單臺主機之間的通訊;
單播 多播(組播) 廣播區分
單播 多播(組播) 廣播 Mac地址區分: 1.6個位元組全F廣播地址:FFFF-FFFF-FFFF 2.首個位元組低4位為奇數表示為組播地址:71XX-XXXX-XXXX,一般可通過mac_addr[0]&x01 來區分 3.除上述1、2以外的,為單播MAC地址
WinSock2 IP組播(多播)示例
#include <winsock2.h>#include <ws2tcpip.h> #include <stdio.h>#include <stdlib.h> #pragma comment( lib, "ws2_32.lib" ) #define MCAST