ACE网络库学习笔记
ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。
ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。
ACE_Message_QueueACE消息队列,请参考:
使用Message_Queue的经典的“有界缓冲区”的ACE实现
ACE_Message_BlockACE_Message_Block用于构建“固定”和“可变”长度的消息。ACE_Message_Block可以将多条消息连接在一起,形成一个链表,从而支持复合消息。请参考:
ACE_Message_Block消息数据类
ACE_Message_Block—–ACE消息的存储
ACE_Thread_ManagerACE线程管理类,请参考:
ACE_Thread_Manager(v3.12)
ACE日志设施请参考:
使用ACE日志设施(二)详细介绍(v4)
ACE组播通信请参考:
ACE组播通信,by NoName.
linux网络编程之一—–多播(组播)编程 ,by 胡永光.
问题参考ACE静态链接问题请参考
ACE的”error LNK2019: unresolved external symbol”链接错误
ACE的开发和使用 - FAQ
How to solve unresolved external symbol error - if_nametoindex in visual studio 2013
ACE TCP Server无法Open的问题最近突然发现ACE_SOCK_Acceptor.open方法报错,无法初始化,错误代码是10093,通过分析是WSAStartup()未初始化。最后在main函数文件中通过 #include 
12345ACE_INET_Addr commAddr(1500);if (m_acceptor->open(commAddr, 1) == -1) { ACE_DEBUG((LM_ERROR, "errno=%d", ACE_OS::last_error())); return -1;}
ACE 多网口多播问题当多播时存在多个网口,应指定多播绑定的网口。参考如下代码:
12345678910111213141516#include "ace/SOCK_Dgram_Mcast.h"#include "ace/Log_Msg.h"int main(){ ACE_SOCK_Dgram_Mcast mcast; ACE_INET_Addr srv_addr("224.0.0.9:520"); /* if (mcast.open(srv_addr, "eth0", 1) == -1) { ACE_ERROR_RETURN((LM_ERROR, "%p"), -1); }*/ mcast.join(srv_addr,1,"eth0");}
参考链接
ACE 示例2 — Echo Server,by peirenlei.
ACE自适配通信环境,by wikipedia.
服务器并发策略,by maodanp.
Threads and Connections in Backend Applications,by Hussein Nasser.
error LNK2019: 无法解析的外部符号 “int __cdecl ace_main_i(int,char * * const)” ,by 金士顿.
Windows Sockets Error Codes,by microsoft.
WSAStartup 函数 (winsock.h),by microsoft.
socket 函数 (winsock2.h),by microsoft.
ACE_SOCK,by 咚咚锵锵.
C++ Winsock 10093 error,by stackoverflow.
ACE_SOCK_Dgram_Mcast Class Reference,by vanderbilt.
