Atitit 远程存储与协议 mtp ptp rndis midi nfs smb webdav ftp Atitit mtp ptp rndis midi协议的不同区别 1. PTP: 图

本文介绍了多种远程存储与传输协议,如PTP(图片传输协议)、MTP(媒体传输协议)、RNDIS(远程网络驱动接口规范)等。详细阐述了MTP协议的特点、与USB的区别、协议栈及使用案例,还提及了Java读写PTP、MTP的相关类库与工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Atitit 远程存储与协议   mtp ptp rndis midi nfs smb webdav ftp

 

 

Atitit mtp ptp rndis midi协议的不同区别

 

1. PTP: 图片传输协议的 缩写,全称为:picture transfer protocol;  1

2. Atitit 分布式文件系统 hdfs nfs.docx 2

3. rndis既是RemoteNDIS,既是远程网络驱动接口规范。 2

4. Fastdfs webdav sshSftp Scp imap 2

5. MTP:媒体传输协议,是基于PTP(Picture Transfer Protocol)协议的扩展,主要用于传输媒体文件 2

5.1. Mtp 与usb区别 3

5.2. 不过和UMS相比,MTP也有不足之处: 5

5.3.  MTP协议介绍 5

5.4. Atitit java读写 ptp mtp 8

6. 类库与工具 9

6.1. Java library for USB portable devices 9

6.1.1. Description 9

6.1.2. Quick Install and Use 10

7. 参考资料 10

7.1. 论MTP模式与USB存储模式(MTP in Android)!-魅族手机-魅族社区.html 10

7.2. dministrator>cd C:\Users\Administrator\Desktop\远程存储资料包 10

7.3. 10

7.4. dministrator\Desktop\远程存储资料包>dir /b 10

7.5. a读写 ptp mtp.docx 10

7.6. ptp rndis midi协议的不同区别.docx.txt 10

7.7. 手机 与磁盘同步 v2.docx 11

7.8. 件服务与远程文件互操作相关的协议 ftp http nfs smb webdav 的区别与总结.docx 11

7.9. 络文件共享解决方案webdav nfs vpn smb.docx 11

 

 

  1. PTP: 图片传输协议的 缩写,全称为:picture transfer protocol;


 图片传输协议的 缩写,全称为:picture transfer protocol;
PTP是最早由柯达与微软协商制定的一种标准,符合这种标准的图像设备在接入Windows XP系统之后可以更好地被系统和应用程序所共享,尤其在网络传输方面,系统可以直接访问这些设备用于建立网络相册时图片的上传、网上聊天时图片的传送等

  1. Atitit 分布式文件系统 hdfs nfs.docx
  2. rndis既是RemoteNDIS,既是远程网络驱动接口规范

Remote Network Driver Interface Specification,既是RemoteNDIS,既是远程网络驱动接口规范。基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。[1] 

 

NDIS是Network Driver Interface Specification,即网络驱动接口规范。NDIS的主要目的就 是为NIC(网络接口卡,Network Interface Cards)制定出标准的API接口。MAC(介质访问控制,Media Access Controller)设备驱动封装了所有的NIC硬件 实现,这样一来所有的使用相同介质的NIC就可以通过通用的编程接口被访问。 NDIS同时也提供一个函数库(有时也称作wrapper),这个库中的函数可以被MAC驱动调用,也可以被高层的协议(例如TCP/IP)驱动调用。这些wrapper函数使得MAC驱动和协议驱动的开发变得更加容易。

 

  1. Fastdfs webdav sshSftp Scp imap
  2. MTP:媒体传输协议,是基于PTP(Picture Transfer Protocol)协议的扩展,主要用于传输媒体文件

MTP in Android

MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.0开始支持MTP。不过,在今天的智能手机领域内,Google和微软是一对冤家


 媒体传输协议,是基于PTP(Picture Transfer Protocol)协议的扩展,主要用于传输媒体文件,其中有价值的应用就是同步DRM文件的license。目前支持MTP协议的只有 WMP10(Windows Media Player 10)和WMP11(Windows Media Player 11)两个版本,WMP11加入了对Playlist和Album art的支持,在获取媒体文件信息的时候GetObjectPropList代替了WMP10的GetObjectInfo命令。
MTP支持对数字音频播放器的音乐文件和移动媒体播放器上的电影文件的传输,它是 Windows Media框架的一部分,因此与Windows Media Player紧密相关。Windows Vista内建了对MTP的支持,在Windows XP中支持MTP需要安装Window Media Player 10或以上的版本。Mac和Linux有支持MTP的软件包。
MTP的应用分两种角色,一个是作为Initiator,另一个作为Responder。例如:WMP(Windows Media Player)就是Initiator,而portable media player设备就是作为Responder。Responder都是被动的回复Initiator的命令,不会主动发命令。主要的用途是传输媒体文件(Media File),并从(向)设备关联元数据,对设备的远程控制有可选的额外支持,读取和设置设备参数,如特别的DRM相关的受限内容设备参数。设备也可向主机发送事件(event)。
MTP既可以实现在USB协议上,也可以实现在TCP/IP协议上,它属于上层的应用协议,而不关心底层传输协议。目前大部分设备的应用都是基于USB协议。市场上支持MTP的设备有Motorola的Z6, U9, E8等,还有索尼NWZ-A81X系列。总之有越

    1. Mtp 与usb区别

 

 背景知识介绍

笔者相信《程序员》杂志的绝大多数读者或多或少都使用过MTP。因为早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Picture Transfer Protocol)进行媒体文件传输。那时,只要通过USB数据线把它们连接上Windows操作系统,就能在“我的电脑“中见到这些设备了。此后,用户可以把它们当做U盘一样使用,例如对其进行目录、文件的浏览和拷贝等操作。

既然可以通过MTP把智能设备当作U盘使用,那么它和我们常用的USB大容量存储(USB Mass Storage,简称UMS)有何不同呢?

  • UMS模式下,PC操作存储设备的粒度是设备块(FAT block),而非文件系统。什么意思?此处举一个简单例子。当Android手机通过UMS将sdcard挂载到PC后,PC就拥有对sdcard的绝对控制权。这样,手机就无法同时访问sdcard了。这种做法带来的后果就是Camera或Music程序将因没有外部存储空间而提示无法进行操作(注意,有些厂商的手机对此进行过修改,使得Camera能短时间录制一部分视频到内部存储空间)。这也是Android早期版本中一个很明显的特点。另外,由于PC在操作sdcard时可能弄坏其文件系统,这将导致sdcard重新挂载到手机后不能被识别。

 

如果Android手机的sdcard以MTP模式挂载到PC机上,sdcard的控制权其实还是属于手机。只不过智能手机通过MTP协议向PC机构建了一个虚拟文件系统。PC机操作其中的文件时,都会通过标准MTP协议向智能手机发起请求。另外,Android把MTP功能集成在MediaProvider[1]中,其好处是PC机操作(例如拷贝或删除等)媒体文件时,媒体数据都会及时更新到媒体数据库中。而UMS模式下,当sdcard挂载回手机后,Android还得花较长时间重新扫描媒体文件以更新媒体数据库。

 

    1. 不过和UMS相比,MTP也有不足之处:
  • 传输大文件的速度较慢。
  • MTP不能直接修改文件本身。只能先拷贝到本地修改,完毕后再拷贝回去。
  • 除了Windows外,Linux和MacOS对MTP支持还不是很完善。

 

    1.  MTP协议介绍

根据协议,MTP的使用者包括两个部分,分别是Initiator和Responder。如图1-1所示:

图1-1 Initiator和Responder图示

由图1-1可知:

  • Initiator:主要是指USB Host,例如PC机,笔记本等。协议规定所有MTP操作只能由Initator发起。
  • Responder:一般是诸如数码相机、智能手机等存储媒体文件的设备。Responder在MTP中的作用就是处理Initator发起的请求。同时,它还会根据自身状态的变化发送Event以通知Initiator。

注意:后文我们将统一以PC代表Initiator,Android手机代表Responder。

与很多协议一样,MTP也有自己的协议栈,如图1-2所示:

图1-2 MTP协议栈

由图1-2可知,MTP协议栈由下到上分别是:

  • Pyshical Layer(物理层):物理层在MTP协议中用来传输数据。目前有三种物理层可供MTP使用。它们分别是USB:其主要特点是传输文件,同步媒体文件时速度快,而且可以边工作边充电,这是目前用的最多的一种方式;IP:基于IP的MTP(简称MTP/IP)将通过UPnP来匹配和发现设备。它是家庭网络中是最理想的传输方式;Bluetooth:MTP/BT是最省电,同时也是速度最慢的一种传输方式,用处较少。
  • 传输层:MTP中,数据传输格式遵循PTP协议
  • 命令层:实现了MTP协议中的各种命令。

如上文所述,MTP采用命令-应答方式来工作(Initator发送命令给Responder处理,Responser反馈处理结果),这种方式的主要特点有:

  • 所有MTP命令均以Package(数据包)的方式在设备两端进行传递。
  • Initiator必须接收到前一条消息的处理结果(不论是成功还是超时)后,才能发送下一条消息。

下面我们将以PC通过MTP打开一个文件为例,按顺序介绍其中涉及到几个主要MTP命令:

  • 当设备第一次连接上PC后,Initiator(即PC)首先会发送一个名为GetDeviceInfo的请求以获取设备的信息,这些信息包括设备所支持PTP版本的程度,以百分号表示(默认是100)、所支持的MTP命令(Operation Supported)、所支持的Event类型等。
  • 接着PC端会发送OpenSession命令以创建一个会话,该会话一直保持到设备从PC上断开为止。此后所有命令(除GetDeviceInfo命令外)必须在此会话存活期间才能发送。会话在MTP协议中由SessionID来标识,它是一个32位的无符号整型,由PC选择并传给手机。
  • PC端如果要进行文件操作的话,必须从根目录开始定位目标文件。由于Windows的特殊性,手机内部存储卡在windows系统中显示为盘符。注意,如果手机内部有两块存储卡的话(如内部存储卡和外部sd卡),Windows中会显示为两个盘符。PC端需要通过GetStorageIDs命令返回某个盘符对应的StorageID。在MTP中,StorageID是一个32位无符号整型,每一个StorageID代表了一个逻辑盘符。
  • PC端可以根据上一步的StorageID号,利用GetStorageInfo操作去获取存储设备的信息,例如剩余存储空间、文件系统类型、访问权限等。
  • 接着,PC就会通过GetObjectHandles命令来获取此盘符下的文件和子目录的Object Handles(一个Object Handle代表一个文件或目录。该值由Responder生成并保证唯一性)。有了Object Handle,PC就可以操作这些文件或目录了,例如继续通过GetObjectHandles获取某个目录中子文件和子目录的信息。
  • 假设现在需拷贝一个文件到手机上,那么PC会通过SendObjectInfo命令将文件信息(如文件名、文件大小)等传递给手机。而手机需要检查目标目录是否有足够的空间和对应权限。
  • 如果一切正常,PC将通过SendObject把数据传递给手机。真正写文件到设备存储空间的则是手机中的Responder。Android实现的MTP还会在媒体文件传输完毕后,将信息更新到媒体数据库中。
  • 除此之外,PC还可利用SetObjectPropValue 命令来设置文件的各种属性值,如Audio BitRate(比特率),Sample Rate(采样率),Number Of Channels(声道)等。

以上为读者描述了MTP使用的一个简单案例。至于其中的各种MTP命令,读者不妨阅读参考文献1,即《MTP Specification v1.0.pdf》。协

 

 

    1. Atitit java读写 ptp mtp

 

USB-MTP(Media Transfer Protocol媒体传输协议)
MTP是微软免费向数码相机,媒体设备等厂商公开的连接技术,这些厂商可以将其写入自己设备的“固件” 当中。MTP的基础是“照片传输协议”(PTP)。

MTP支持将通过升级或者操作系统换代整合进未来的微软操作系统当中。数码相机用户不用再额外安装驱动程序就能够将自己的数码设备连接至微软操作系统的电脑。
利用MTP,数码相机将被Windows识别为和USB闪存驱动器一样的设备,这样,摄影师就能够将自己的作品和外界分享了。

 

MTP既可以实现在USB协议上,也可以实现在TCP/IP协议上,它属于上层的应用协议,而不关心底层传输协议。目前大部分设备的应用都是基于USB协议

 

  1. 类库与工具

 

Java读写mtp貌似找不到

Com mtp有的,但是没找到。。

 

ptp4j

A Java library implementing the PTP/MTP/PTP2 protocol

...This is a platform independent library Java library implementing the PTP/MTP/P

 

 

    1. Java library for USB portable devices
      1. Description

Jusbpmp is a Java library that allows to communicate with portable USB players (supporting MSC or MTP) on Linux or Windows.

It offers features like sending and reading files to / from the USB device, device folder management, MTP metadata management.

      1. Quick Install and Use

(1) copy jar file to your application lib directory

(2) copy native library files to your application running directory or in the java.library.path

 

 

 

PowerShell访问便携式媒体设备(MTP)文件系统 - PowerShell 中文博客.html

mtp - Java access to lib - Stack Overflow.html

 

 

  1. 参考资料
    1. 论MTP模式与USB存储模式(MTP in Android)!-魅族手机-魅族社区.html
    2. dministrator>cd C:\Users\Administrator\Desktop\远程存储资料包
    3. dministrator\Desktop\远程存储资料包>dir /b
    4. a读写 ptp mtp.docx
    5.  ptp rndis midi协议的不同区别.docx.txt
    6.  手机 与磁盘同步 v2.docx
    7. 件服务与远程文件互操作相关的协议 ftp http nfs smb webdav 的区别与总结.docx
    8. 络文件共享解决方案webdav nfs vpn smb.docx

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

Atiend

 

 

 

<think>好的,我现在需要回答用户关于Android USB Gadget不同模式的问题。用户提到的模式包括ACCESSORY、MTPMIDIPTPRNDIS和AUDIO_SOURCE。我需要分别解释每个模式的功能、用途以及它们之间的区别。 首先,我应该回顾一下这些模式的基本信息。ACCESSORY模式是Android特有的,用于让设备作为USB主机连接外部配件,比如Arduino。MTP是媒体传输协议,用于文件传输,常见于连接电脑时传输照片和音乐。MIDI音乐相关,用于连接MIDI设备如键盘或控制器。PTP片传输协议,早期用于数码相机,现在可能用于快速传输照片。RNDIS是微软的远程网络驱动接口规范,允许通过USB共享网络连接,类似于USB网络共享。AUDIO_SOURCE可能涉及音频输出,比如将设备作为USB音频源连接到车载系统。 接下来需要确认每个模式的准确用途和区别。可能需要查阅Android文档或相关资料,确保信息正确。例如,确认ACCESSORY模式和ADB调试的区别,以及AUDIO_SOURCE的具体应用场景。 需要注意用户可能对这些模式的使用场景不太清楚,因此需要举例说明每个模式的实际应用。比如,MTP用于文件管理,RNDIS用于网络共享等。同时,要指出它们的区别,比如传输协议不同MTPPTP),或者用途的不同MIDI用于音乐,RNDIS用于网络)。 还要考虑用户可能的背景。如果用户是开发者,可能需要更技术性的解释,比如涉及到的协议层次或API接口。但根据之前的对话,用户可能是在进行USB相关的开发或调试,因此需要保持解释的实用性,结合代码示例或使用场景。 需要确保术语准确,比如RNDIS是微软的协议,而Android中使用它来实现USB网络共享。同时,确认AUDIO_SOURCE是否属于Android的标准Gadget功能,或者是否有其他名称。 可能存在混淆的地方,比如PTPMTP都用于文件传输,但需要明确它们的区别PTP更专注于照片,而MTP支持更多媒体类型)。此外,ACCESSORY模式普通USB主机模式的区别,比如是否需要配件支持特定的协议。 总结每个模式的要点,结构清晰,分点说明,使用表格或列表帮助用户理解。最后,可能需要一个对比表格,突出各个模式的功能、使用场景和协议类型。 需要避免技术错误,比如确认MIDI在Android中的支持情况,是否有特定的API或限制。同时,确保每个模式的描述准确,不会混淆,例如ACCESSORY模式是Android特有的,而其他模式可能基于通用标准。 最后,检查回答是否符合之前的格式要求,使用中文,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能不需要数学公式,主要用结构化文本和列表。确保使用用户提到的模式名称,并正确解释。</think>以下是Android USB Gadget各模式的功能解析及对比: $$ \begin{array}{|c|l|l|l|} \hline \text{模式名称} & \text{功能描述} & \text{典型应用场景} & \text{协议标准} \\ \hline \textbf{ACCESSORY} & \text{Android专用模式,设备作为USB主机} & \text{连接Arduino等外部硬件开发板} & \text{Android ADK协议} \\ & \text{为配件供电并通信} & \text{定制外设控制(如POS机)} & \\ \hline \textbf{MTP} & \text{媒体传输协议} & \text{电脑互传照片/音乐/视频} & \text{微软PTP扩展} \\ \text{(Media Transfer Protocol)} & \text{结构化文件传输} & \text{Android默认连接模式} & \\ \hline \textbf{MIDI} & \text{音乐设备数字接口} & \text{连接电子琴/合成器等MIDI设备} & \text{MIDI over USB} \\ & \text{传输音乐控制信号} & \text{手机作为MIDI控制器} & \\ \hline \textbf{PTP} & \text{片传输协议} & \text{数码相机照片导入} & \text{ISO 15740} \\ \text{(Picture Transfer Protocol)} & \text{仅传输像文件} & \text{快速导出手机照片} & \\ \hline \textbf{RNDIS} & \text{网络共享协议} & \text{USB网络共享给电脑} & \text{微软专利协议} \\ & \text{通过USB建立网络连接} & \text{调试无网络设备} & \\ \hline \textbf{AUDIO\_SOURCE} & \text{音频输出模式} & \text{车载USB音频输入} & \text{UAC1.0/2.0} \\ & \text{输出数字音频流} & \text{外接DAC解码器} & \\ \hline \end{array} $$ **关键技术区别**: 1. **协议层级**: - MTP/PTP工作在应用层(文件传输) - RNDIS在网络层(TCP/IP协议栈) - MIDI在应用层(音乐事件传输) - ACCESSORY需要硬件支持(VBus供电) 2. **数据传输特征**: $$ \begin{cases} \text{MTP/PTP} & \text{批量传输模式}\ (\text{Bulk Transfer})\\ \text{MIDI} & \text{等时传输}\ (\text{Isochronous})\\ \text{RNDIS} & \text{中断+批量传输组合} \end{cases} $$ 3. **Android实现差异**: - ACCESSORY模式需要`AndroidOpenAccessory.h`库支持 - AUDIO_SOURCE依赖USB Audio Class驱动 - RNDIS在Linux内核中对应`g_ether`驱动模块 **使用场景决策树**: ``` 需要传输文件? ├─需要结构化媒体管理 → 选择MTP └─仅传输照片 → 选择PTP 需要音乐制作? → 选择MIDI 需要网络连接? → 选择RNDIS 连接外部硬件? → 选择ACCESSORY 需要音频输出? → 选择AUDIO_SOURCE ``` **开发注意事项**: 1. ACCESSORY模式需要双方设备实现AOA协议 2. MTP在Android 4.4+默认启用,需申请`android.permission.MTP`权限 3. MIDI模式需要API Level 23+支持,使用`android.media.midi`包 4. RNDIS在Windows系统需额外驱动,Linux/Mac原生支持 5. AUDIO_SOURCE模式对延迟敏感(典型延迟要求<20ms)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值