netty4传输大文件
『壹』 基于netty4实现进程间通信,使用什么encode,decode机制效率高
进程间通信机制1文件映射文件映射(Memory-MappedFiles)能使进程文件内容作进程址区间块内存待进程必使用文件I/O操作需简单指针操作读取修改文件内容Win32API允许进程访问同文件映射象各进程自址空间接收内存指针通使用些指针同进程读或修改文件内容实现文件数据共享应用程序三种使进程共享文件映射象(1)继承:第进程建立文件映射象进程继承该象句柄(2)命名文件映射:第进程建立文件映射象给该象指定名字(与文件名同)第二进程通名字打文件映射象另外第进程通些其IPC机制(名管道、邮件槽等)名字传给第二进程(3)句柄复制:第进程建立文件映射象通其IPC机制(名管道、邮件槽等)象句柄传递给第二进程第二进程复制该句柄取该文件映射象访问权限文件映射进程间共享数据非效较安全性文件映射能用于本机器进程间能用于网络发者必须控制进程间同步2共享内存Win32API共享内存(SharedMemory)实际文件映射种特殊情况进程创建文件映射象用0xFFFFFFFF代替文件句柄(HANDLE)表示应文件映射象操作系统页面文件访问内存其进程打该文件映射象访问该内存块由于共享内存用文件映射实现所较安全性能运行于同计算机进程间注意点:要控制同步且CString、list、arry、map等collectclass都能安全使用于共享内存要拥虚函数C++类放共享内存要CObject派类MFC象放共享内存要使用"pointwithinthesharedmemory"指针要使用"pointoutsideofthesharedmemory"指针使用"based"指针安全要使用3匿名管道管道(Pipe)种具两端点通信通道:端句柄进程另端句柄进程通信管道单向-端读另端点写;双向管道两端点既读写匿名管道(AnonymousPipe)父进程进程间或同父进程两进程间传输数据名字单向管道通由父进程创建管道由要通信进程继承通道读端点句柄或写端点句柄实现通信父进程建立两或更继承匿名管道读写句柄进程些进程使用管道直接通信需要通父进程匿名管道单机实现进程标准I/O重定向效能网使用能用于两相关进程间4命名管道命名管道(NamedPipe)服务器进程或客户进程间通信单向或双向管道同于匿名管道命名管道相关进程间同计算机间使用服务器建立命名管道给指定名字任何进程都通该名字打管道另端根据给定权限服务器进程通信命名管道提供相简单编程接口使通网络传输数据并比同计算机两进程间通信更困难要同进程通信力5邮件槽邮件槽(Mailslots)提供进程间单向通信能力任何进程都能建立邮件槽邮件槽服务器其进程称邮件槽客户通邮件槽名字给邮件槽服务器进程发送消息进消息直放邮件槽直服务器进程读取止进程既邮件槽服务器邮件槽客户建立邮件槽实现进程间双向通信通邮件槽给本计算机邮件槽、其计算机邮件槽或指定网络区域所计算机同名字邮件槽发送消息广播通信消息度能超400字节非广播消息度则受邮件槽服务器指定消息度限制邮件槽与命名管道相似传输数据通靠数据报(TCP/IP协议UDP包)完旦网络发错误则保证消息确接收命名管道传输数据则建立靠连接基础邮件槽简化编程接口给指定网络区域内所计算机广播消息能力所邮件槽失应用程序发送接收消息另种选择6剪贴板剪贴板(ClippedBoard)实质Win32API组用传输数据函数消息Windows应用程序间进行数据共享提供介Windows已建立剪切(复制)-粘贴机制同应用程序间共享同格式数据提供条捷径用户应用程序执行剪切或复制操作应用程序选取数据用种或种格式放剪贴板任何其应用程序都剪贴板拾取数据给定格式选择适合自格式剪贴板非松散交换媒介支持任何数据格式每格式由符号整数标识标准(预定义)剪贴板格式该值Win32API定义量;非标准格式使用RegisterClipboardFormat函数注册新剪贴板格式利用剪贴板进行交换数据需数据格式致或都转化某种格式行剪贴板能基于Windows程序使用能网络使用7态数据交换态数据交换(DDE)使用共享内存应用程序间进行数据交换种进程间通信形式应用程序使用DDE进行性数据传输现新数据通发送更新值应用程序间态交换数据DDE剪贴板既支持标准数据格式(文本、位图等)支持自定义数据格式数据传输机制却同明显区别剪贴板操作几乎总用作用户指定操作性应答-菜单选择Paste命令尽管DDE由用户启继续发挥作用般必用户进步干预DDE三种数据交换式:(1)冷链:数据交换性数据传输与剪贴板相同(2)温链:数据交换服务器通知客户客户必须请求新数据(3)热链:数据交换服务器自给客户发送数据DDE交换发单机或网络同计算机应用程序间发者定义定制DDE数据格式进行应用程序间特别目IPC更紧密耦合通信要求数基于Windows应用程序都支持DDE8象连接与嵌入应用程序利用象连接与嵌入(OLE)技术管理复合文档(由种数据格式组文档)OLE提供使某应用程序更容易调用其应用程序进行数据编辑服务例OLE支持字处理器嵌套电表格用户要编辑电表格OLE库自启电表格编辑器用户退电表格编辑器该表格已原始字处理器文档更新电表格编辑器变字处理器扩展使用DDE用户要显式启电表格编辑器同DDE技术相同数基于Windows应用程序都支持OLE技术9态连接库Win32态连接库(DLL)全局数据调用DLL所进程共享给进程间通信辟条新途径访问要注意同步问题虽通DLL进行进程间数据共享数据安全角度考虑我并提倡种使用带访问权限控制共享内存更些10远程程调用Win32API提供远程程调用(RPC)使应用程序使用远程调用函数使网络用RPC进行进程通信像函数调用简单RPC既单机同进程间使用网络使用由于Win32API提供RPC服OSF-DCE()标准所通Win32API编写RPC应用程序能与其操作系统支持DECRPC应用程序通信使用RPC发者建立高性能、紧密耦合布式应用程序11NetBios函数Win32API提供NetBios函数用于处理低级网络控制主要IBMNetBios系统编写与Windows接口除非些特殊低级网络功能要求应用程序其应用程序要使用NetBios函数进行进程间通信12SocketsWindowsSockets规范U.C.BerkeleyBSDUNIX流行Socket接口范例定义套Windows网络编程接口除BerkeleySocket原库函数外扩展组针Windows函数使程序员充利用Windows消息机制进行编程现通Sockets实现进程通信网络应用越越主要原Sockets跨平台性要比其IPC机制另外WinSock2.0仅支持TCP/IP协议且支持其协议(IPX)Sockets唯缺点支持底层通信操作使单机进程间进行简单数据传递太便使用面介绍WM_COPYDATA消息更合适些13WM_COPYDATA消息WM_COPYDATA种非强却鲜知消息应用向另应用传送数据发送需使用调用SendMessage函数参数目窗口句柄、传递数据起始址、WM_COPYDATA消息接收需像处理其消息处理WM_COPYDATA消息收发双实现数据共享WM_COPYDATA种非简单底层实际通文件映射实现缺点灵性高并且能用于Windows平台单机环境