❶ 手机能不能实现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
由于内部错误导致操作失败