❶ 手機能不能實現p2p通信 在2.5G 或者3G環境。
能實現。
附註:
ESFramework提供了基於TCP和UDP的P2P通信,而且ESFramework在原始UDP基礎上做了增強,以保證基於UDP的通信也像TCP一樣可靠。在客戶端之間需要高頻通信的分布式系統中(如IM系統等),可靠的P2P通信將節省巨大的帶寬和伺服器成本。
ESFramework是一套可高度復用的、靈活的、單純而又強大的.NET通信框架,全部採用C#編寫。採用ESFramework框架,開發人員將不再需要了解Socket、不用再關心底層與通信相關的一切瑣碎的事情,而可以在一個更高的層次上更快地開發高效穩定的網路通信應用。例如,即時通訊系統(IM),大型多人在線游戲(MMORPG)、在線網頁游戲(WebGame)、文件傳送系統(FTS)、數據採集系統(DGS)、分布式OA系統、遠程教育系統等等,凡是需要分布式通信的系統都可以使用ESFramework框架。
❷ 360手機助手下載的游戲數據包是APK.P2P文件,怎麼變成文件夾
其實很簡單,把他點開安裝後,他會自動解壓出文件夾。
可以參考下下面資料。
===================
APK是androidPackage的縮寫,即Android安裝包(apk)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓後,可以看到Dex文件,Dex是DalvikVM executes的全稱,即Android Dalvik執行程序,並非Java ME的位元組碼而是Dalvik位元組碼。Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接,和Windows Mobile中的PE文件有區別。
P2P是peer-to-peer的縮寫,peer在英語里有"(地位、能力等)同等者"、"同事"和"夥伴"等意義。這樣一來,P2P也就可以理解為"夥伴對夥伴"的意思,或稱為對等聯網。目前人們認為其在加強網路上人的交流、文件交換、分布計算等方面大有前途。
P2P還是point to point 點對點下載的意思,他是下載術語,意思是在你自己下載的同時,自己的電腦還要繼續做主機上傳,這種下載方式,人越多速度越快,但缺點是對你的硬碟損傷比較大(在寫的同時還要讀),還有就是對你內存利用率占很高,影響整機速度!
❸ Android開發P2P聊天是怎麼實現的
1、注冊用戶((Openfire伺服器),已搭建好伺服器。
2、好友添加(不用分組,在聊天界面直接顯示添加的好友)
3、P2P聊天(文字功能)
4、保存查看聊天記錄:用戶可查看與好友的聊天記錄信息
5、好友上下線自動刷新各自頭像列表,點擊頭像進入聊天界面
6、demo要支持android手機、7寸平板和10平板.
❹ android 視頻 p2p
p2p可能不能實現實時播放。因為p2p是分段傳輸的,有可能你傳輸了尾部的一段視頻,前面的視頻段還沒穿,造成播放卡頓。
要是實時傳輸,還是兩台電腦之間通過udp協議直接傳的好。
或者給p2p加上限制,視頻段必須按順序傳播。
說實話我不太看得懂你的意思。
如果你說的是獲取別人手機上的視頻並邊下載邊播放的話,那麼udp協議傳輸文件即可。
如果你說的是獲取別人正在錄制的視頻並播放的話,那麼有點類似視頻通話,兩個埠同步傳輸圖像和文件,還是用udp協議。
所以我不知道你為什麼要糾結於p2p?
❺ 有用過百度的雲播放器 Android SDK 的么
網路雲播放器是綠色軟體無廣告無病毒在本站下載完成後解壓縮運行應用程序進入主界面,登錄網路網盤即可搜索自己需要的資源,操作十分簡單。 1.集網路搜索,p2p搜索於一體,可直接播放或打開搜索到的各類視頻或文件資源。 2.可以直接用網路的雲播功能快速高效的看各類高清電影。 3.網路雲播登錄一次,以後便可長時間不用登錄一樣可以享受無限制雲播功能。 4.視頻列表的管理,可以一鍵添加離線任務或刪除以及批量刪除創建雲播視頻等。 軟體名稱:網路雲播放器 v1.2 軟體大小:1.67MB下載地址:/ruanjian/meiti/77231.html
❻ 求Android實現邊下邊播代碼,思路也行 求大神賞給小弟吧
1) 播放器在播放磁力鏈、或者torrrent文件時,調用產品的P2P引擎,p2p引擎裡面通過torrent或者磁力鏈信息,去通過tracker、DHT尋找周圍的peer鄰居,然後獲取數據。
2) p2p獲取到的數據,通過播放器可以支持的協議,返回給播放器,這就是一個標準的視頻文件,所以它可以正常播放
3) 播放器在拖動時,p2p引擎自動切換下載位置,並返回數據。以上這些是不分Android、IOS還是PC的,只是在移動端可能下載速度、檢測是否WIFI之類的有些策略上的差異而已
❼ android中什麼時候會選擇用廣播來進行線程間的通信
android中什麼時候會選擇用廣播來進行線程間的通信 Android 多線程 通信
線程中通信就不要用廣播了吧 進程中通信可以用廣播或者aidl
可是,這兩天看到的項目都是這么做的;然後,自己分析了下,覺得一下的理由也是可以成立的;
1.正常情況下我們選擇handler消息機制來進行單向的線程間的通信;(工作線程向主線程發送消息)
因為主線程有現成的handler,而工作線程沒有現成的handler,這樣的話,主線程將handler交給工作線程而讓工作線程將工作的結果交給主線程;
相反,工作線程中沒有現成的handler(事實上是沒有消息隊列,也就是handler沒有綁定到工作線程),那麼,如果開辟的話,代碼角度上是挺麻煩的(相對應廣播機制來說);
2.廣播機制本身就是雙向的(工作線程向主線程發送廣播,主線程向工作線程發送廣播);
//另外,對於像一個activity中通過fragment來進行界面的處理; 我們大多數情況下是採用廣播的機制來實現fragment中adapter的數據的更新;這樣做主要是考慮到工作線程的任務載入完成,而具體的對應刷新的activity可能還沒有啟動;
另外,基於介面隔離原則,如果用handler進行通信的話,則不能很好的滿足這一原則;
你要是周期比較長 用廣播好些吧
應該與周期關系不是很密切。最主要的原因是兩條線成是雙向通信。
Handler類似於P2P的通信。
廣播則類似於一個server端,用來處理分發不同線程的請求,從控制器的角度來說用廣播更好一點。
一般使用Handler的,多用於子線程處理事務,完成時告知主線程這一類的情況。
而類似樓主所說的多條線程之間需要頻繁交互的話,廣播是個很好的選擇,並且結構清晰,只是不知道廣播的性能與handler相比會怎麼樣。
❽ 有沒有可以在線播放種子鏈接的軟體(安卓)
必然沒有,播放種子說白了就是邊下邊播,手機下載速度能多快樓主有uc迅雷想必清楚,那麼點速度根本緩沖不過來,想想迅雷看看在線播放需要的速度就明白了
❾ 基於Android的音樂播放器如何通過p2p方式實現播放和下載功能
有本書是《Android從入門到精通》了裡面有個在線音樂播放器的例子,你可以參考一下
❿ android wifip2p怎麼用
為了使用Wi-Fi P2P,要在你的清單文件中添加 CHANGE_WIFI_STATE 、 ACCESS_WIFI_STATE 、和 INTERNET 許可權。即使Wi-FiP2P不要求互聯網連接,但它要使用標準的Java套接字,並且Android在使用這些套接字時要求申請這些許可權,因此要在清單中申請INTERNET許可權。
<manifestxmlns:android="http //schemas android com/apk/res/android" package="com.example.android.nsdchat"
...
<uses-permission
android:required="true"
android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission
android:required="true"
android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission
android:required="true"
android:name="android.permission.INTERNET"/>
...
添加本地服務
如果你要提供一個本地服務,那麼就需要把這個服務注冊為可發現的。本地服務被注冊後,框架就會自動的響應來自對等點的服務發現請求。
以下是創建本地服務的步驟:
1. 創建一個 WifiP2pServiceInfo 對象;
2. 填入你的服務相關的信息;
3. 調用addLocalService()方法來注冊本地服務,讓其可發現。
private void startRegistration () { // Create a string map containing information about your service.
Map record = new HashMap();
record.put("listenport", String.valueOf(SERVER_PORT));
record.put("buddyname", "John Doe" + (int) (Math.random() * 1000));
record.put("available", "visible");
// Serviceinformation. Pass it an instance name, service type
//_protocol._transportlayer , and the map containing
//information other devices will want once they connect to this one.
WifiP2pDnsSdServiceInfo serviceInfo =
WifiP2pDnsSdServiceInfo.newInstance("_test", "_presence._tcp", record);
// Add thelocal service, sending the service info, network channel,
// andlistener that will be used to indicate success or failure of
// therequest.
mManager.addLocalService(channel, serviceInfo, new ActionListener() {
@Override
public void onSuccess() {
// Command successful! Code isn't necessarily needed here,
// Unless you want to update the UI or add logging statements.
}
@Override
public void onFailure(int arg0) {
// Command failed. Check for P2P_UNSUPPORTED, ERROR, or BUSY
}
});
}
發現附近的服務
Android使用回調方法來通知你的應用程序可用的服務,因此首先要做的就是要建立回調方法。創建一個 WifiP2pManager.DnsSdTxtRecordListener 對象來監聽傳入的記錄。這個記錄可以是其他設備的任意廣播。當一個記錄進入時,你可以把設備地址和其他你想要的其他相關信息復制到當前方法外部的數據結構中,以便後續可以訪問它。下面的例子假設記錄中包含一個「buddyname」欄位,它帶有用戶的標識。
final HashMap < String , String > buddies = new HashMap < String , String >(); ...
private void discoverService() {
DnsSdTxtRecordListener txtListener = new DnsSdTxtRecordListener() {
@Override
/* Callbackincludes:
* fullDomain: full domainname: e.g "printer._ipp._tcp.local."
* record: TXT record dta as amap of key/value pairs.
* device: The device runningthe advertised service.
*/
public voidonDnsSdTxtRecordAvailable(
String fullDomain, Map record, WifiP2pDevice device) {
Log.d(TAG, "DnsSdTxtRecord available -" + record.toString());
buddies.put(device.deviceAddress, record.get("buddyname"));
}
};
...
}
實現一個 WifiP2pManager.DnsSdServiceResponseListener 介面,來獲取服務信息。這個介面會接收實際的描述和連接信息。上面的代碼中使用了 Map 對象把設備地址和用戶標識組成一對。服務響應監聽器使用這個介面把DNS記錄和對應的服務信息連接到一起。實現上述兩個監聽器後,使用 setDnsSdResponseListener() 方法把它們添加給 WifiP2pManager 對象。
private void discoverService () { ...
DnsSdServiceResponseListener servListener = new DnsSdServiceResponseListener() {
@Override
public voidonDnsSdServiceAvailable(String instanceName, String registrationType,
WifiP2pDevice resourceType) {
// Update the device name with the human-friendly version from
// the DnsTxtRecord, assuming one arrived.
resourceType.deviceName = buddies
.containsKey(resourceType.deviceAddress) ? buddies
.get(resourceType.deviceAddress) : resourceType.deviceName;
// Add to the custom adapter defined specifically for showing
// wifi devices.
WiFiDirectServicesList fragment = (WiFiDirectServicesList)getFragmentManager()
.findFragmentById(R.id.frag_peerlist);
WiFiDevicesAdapter adapter = ((WiFiDevicesAdapter)fragment
.getListAdapter());
adapter.add(resourceType);
adapter.notifyDataSetChanged();
Log.d(TAG, "onBonjourServiceAvailable " + instanceName);
}
};
mManager.setDnsSdResponseListeners(channel, servListener, txtListener);
...
}
現在創建一個服務請求並調用 addServiceRequest() 方法,這個方法也需要一個監聽器來包括成功或失敗。
serviceRequest = WifiP2pDnsSdServiceRequest . newInstance (); mManager .addServiceRequest(channel,
serviceRequest,
new ActionListener() {
@Override
public void onSuccess() {
// Success!
}
@Override
public void onFailure(int code) {
// Command failed. Check forP2P_UNSUPPORTED, ERROR, or BUSY
}
});
最後,調用的 discoverServices() 方法。
mManager . discoverServices ( channel , new ActionListener () { @Override
public void onSuccess() {
// Success!
}
@Override
public void onFailure(int code) {
// Command failed. Check for P2P_UNSUPPORTED, ERROR, or BUSY
if (code == WifiP2pManager.P2P_UNSUPPORTED) {
Log.d(TAG, "P2P isn'tsupported on this device.");
else if(...)
...
}
});
如果一切順利,恭喜你大功告成。如果遇到問題,記住前面非同步調用的參數 WifiP2pManager.ActionListener 參數,它提供了指示成功或失敗的回調方法。把調試斷點設置在 onFailure() 方法中來診斷問題。這個方法提供了錯誤代碼,以下是可能發生的錯誤:
P2P_UNSUPPORTED
運行 app 的設備上不支持 Wi-Fi P2P
BUSY
系統忙於處理請求
ERROR
由於內部錯誤導致操作失敗