问题标签 [ace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boost - shared_ptr puzzle
I'm using ACE framework, but I'll try to describe my problem without referencing to it.
I have an event handler (class derived from ACE_Event_Handler). Reference to the event handler is hold by some manager class in maps of shared_ptr's.
At some point of time I want to:
- remove the event handler from manager map
- Some method of event handler should be called by 3rd class which holds row pointer to the event handler (for those familiar with ACE it's handle_close() called by ACE Reactor)
The problem is that order (1) and (2) is not promised. If (1) is called before (2), (2) will work on dangling event handler.
So I thought about adding some additional reference to event handler that will be decremented in (2).
How it can be done? Can the reference to event handler be maintained from within the event handler itself (probably using enable_shared_from_this)?
Thanks
c++ - 连接到远程 UDP 多播服务
70.70.70.70
如果我有服务所在的 IP 地址(比如)、要连接的多播组(比如224.25.25.25
)和端口(比如),如何连接到远程 udp 多播2020
?
我使用 ACE 框架,在嗅探器中我看到 ACE 发送 IGMP 数据包224.0.0.2
,以便加入一个组,但我的家庭路由器(检查点)不知道如何处理它。
c++ - 某些 dll 文件的 ACE_DLL::open 失败
我对这个错误感到很困惑。完整的错误信息如下。
TestFE.dll 的 ACE_DLL::open 失败:错误:查看日志了解详细信息。找不到服务:MySvc
但是如果我再拿一个TestBE.dll,就可以启动成功了。
顺便说一句:TestFE.dll 没有丢失的依赖 dll 文件。Windows 中的 PATH 可以正确定位 TestFE.dll。我尝试比较 TestBE.dll 和 TestFE.dll 之间的项目构建选项,但没有发现。
这里有人可以帮我找出原因吗?谢谢你。
linux - ACE 和异步 UDP 通信
我目前正在研究机器人仿真环境。可以通过网络连接控制/监控可以与虚拟世界交互的机器人。对于整个网络通信(当然还有其他东西,例如线程),我们使用 ACE 库。我现在遇到的问题是,在我看来,异步 UDP 部分已损坏。当运行 ACE 附带的测试程序“test_udp_proactor -h localhost -p 55555”时,我总是会得到错误代码 89(需要目标地址)。到目前为止,这是我尝试过的,但没有任何帮助:
- 重新编译更新/不同版本的 ACE
- 修改test_udp_proactor的代码,重新创建一个类似的程序
- 更改环境(具有 32 位 CPU 和 Ubuntu 9.10 的不同 PC)
使用同步方法时,一切正常,因此网络硬件/软件没有错误。
我在谷歌和这个网站上搜索了几个小时/几天,似乎没有其他人有这个问题!至少我找不到。
我现在真的很沮丧,因为据我了解,ACE真的很成熟可靠。虽然有些人非常喜欢它的设计。它用于航空航天界,其中可靠性和实时性是必须的!我不敢相信 ACE 不支持异步。UDP 通信和/或没有其他人发现这一点。
有人可以用 test_udp_proactor 为我运行一个简单的测试来验证这种行为吗?我们必须使用具有实时功能的系统,因此 Windows 不是一个选项...
任何其他提示和/或提示,最好来自 ACE 专家?:-)
非常感谢
c++ - 选择函数内部是否调用 tcp 连接?
代码新宠物:
我的问题是当连接因非阻塞错误而失败并调用 select 并说 select return success 然后我们需要再次调用 connect 或 select function internal do connect?
c++ - ACE_SOCK_Dgram::open() 和 errno
我试图打开已经打开的 UDP 端口并且 ACE_SOCK_Dgram::open() 失败。正如预期的那样,strace 显示 bind() 失败并且 errno 设置为 EADDRINUSE。
为了查看发生了什么错误,我使用了 ACE_OS::last_error(),但它没有更新。
我想向用户提供端口已在使用中的信息性错误,而不是一些一般性错误。
额外的问题 - 什么时候可以使用 ACE_OS::last_error()?
肿瘤坏死因子
c++ - ACE Reactor 因系统调用中断而退出
我有一个 ACE 反应器,它接受套接字连接并侦听这些连接上的传入数据。反应器在专用线程中运行。这是线程的入口函数:
偶尔run_reactor_event_loop
以 -1 退出并errno
报告原因是“系统调用中断”。我该如何处理这种情况?据我所知,我有两个选择:run_reactor_event_loop
再次调用或将中断的调用配置为使用sigaction
and再次调用SA_RESTART
。
- 再打电话安全
run_reactor_event_loop
吗? - ACE_Reactor::restart 方法有什么作用?看起来它应该重新启动循环?会有帮助吗?
- 开机有多安全
SA_RESTART
?例如,这是否意味着 ^C 不会停止我的应用程序? - 有没有其他方法可以处理这种情况?
c++ - 如何将 ACE 6.0(网络库)构建为静态的?
ACE 为 Visual Studio 提供了解决方案文件,并且有静态和动态喜欢的解决方案文件。(ACE.sln 和 ACE_static.sln)
在他们发布 6.0 之后,不再有 static.sln。
我无法理解。他们为什么要删除静态解决方案文件?有原因吗?
我自己为静态构建设置了预定义的值。这让我很烦。
还有其他方便的方法吗?
c++ - 使用网络库的具有状态信息的 TCP 服务器
我正在为在线回合制游戏编写 tcp 服务器。我已经使用 php 套接字编写了一个原型,但想转向 C++。我一直在研究流行的网络库(ASIO、ACE、POCO、LibEvent),但目前还不清楚哪一个最适合我的需求:
1) 连接是持久的(以分钟为单位),服务器必须能够处理 100 多个同时连接。
2)连接必须能够维护状态信息(用户登录信息)。[我的 php 原型目前要求每个客户端请求都包含登录信息]
3) 可选且最好是多线程的,但只有一个进程。不希望每个连接有 1 个线程,而是有固定数量的线程在所有打开的连接上工作。
我倾向于 POCO 的 TCPServer 或 Reactor 框架,但不确定它们是否符合我的要求。我认为 Reactor 是单线程的,而 TCPServer 强制执行 1:1 线程/连接。我对么?
在任何一种情况下,我都不完全确定如何完成将登录信息与特定连接与随机连接的最重要任务。
token - ACE_Remote_Mutex 是如何工作的?
我编写了两个小程序,试图获取名为“令牌”的相同远程互斥锁:
他们都得到了以下调试输出:
ACE_Remote_Mutex 是否仅适用于某种“代理”,例如 Corba 经纪人?我可以修改我的代码吗?