草庐IT

asio-acceptor

全部标签

c++ - 解析查询与使用 IP 和端口创建端点之间的区别(在 boost asio 中)

我最近注意到我的应用程序存在问题,我认为这是因为我没有正确使用boost::asio并且不了解tcp解析器的作用。基本上,我使用boost::asio::ip::tcp::resolver来获取要连接的端点。我最近发现它可以提供多个端点(特别是当我连接到本地主机时)。目前我在所有端点上请求async_connect。我不是100%肯定,但我认为那很糟糕。我应该一个一个地向他们请求一个async_connect,等待回复,当且仅当它失败时才尝试下一个。所以基本上知道如果我想在这些端点上使用async_connect我有两个选择:重构我的代码,以便我的async_connect正确处理失败

ruby - EventMachine: "` start_tcp_server': no acceptor (port is in use or requires root privileges)"

当我尝试使用EventMachine::run运行服务器时,我不断收到错误消息,指出端口正在使用中。自从我使用命令nohup在后台运行服务器以来,这就开始了。我很确定我已经终止了我启动的进程:我用ps找到了ruby​​进程,并杀死了它。它不再显示。我还运行了lsof-i:8081(8081是我运行它的端口)但没有任何显示。最后,我多次更改ruby​​程序中的端口以隐藏端口,但仍然出现错误!我也觉得可能是我没有root用户,所以试了root也没用。我也重启了服务器。如果还有什么我可以尝试的,请告诉我。注意:这是在debian上。 最佳答案

IOS boost asio 从 ipv6 网络连接

我正在尝试使用ios中的boostasio库连接dvr。该应用程序在ipv4网络的模拟器中运行良好。但是当我在Appstore上提交应用程序时,苹果拒绝了该应用程序,因为它不能在ipv6网络上运行。我可以在苹果网站上看到应用程序应该支持ipv6网络。https://developer.apple.com/news/?id=05042016a所以我认为问题出在我尝试使用boost库连接到DVR的部分,其中DVR的IP地址是从DB(硬编码)中提取的,下面是代码的相关部分。boost::asio::io_serviceio_service_;tcp::resolver::iteratoren

c++ - Linux拒绝使用boost asio对套接字绑定(bind)的权限

我在绑定(bind)套接字时遇到问题,并且在以用户身份运行程序时我的权限被拒绝。这行代码会产生错误。_acceptor=newboost::asio::ip::tcp::acceptor(io,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),服务器端口));错误是terminatecalledafterthrowinganinstanceof'boost::exception_detail::clone_impl>'什么():绑定(bind):权限被拒绝但是,如果我以root身份运行,它工作正常。我试过用禁用appar

c++ - 使用 boost.asio 是否可以进行标记和空间奇偶校验?

我看不到使用termios结构正确设置串行端口,所以我正在查看第三方库。有人建议我尝试boost.asio,但在查看示例时,它似乎不支持标记和空间奇偶校验,这是真的吗?如果可能的话,有人可以展示示例代码,说明如何在boost.asio中执行标记和空格奇偶校验。我使用8个数据位、115220波特率和1个停止位。有谁知道在linux上支持标记和空间奇偶校验的任何第三方库,我可以使用它来代替boost? 最佳答案 关于这个问题有一篇很好的文章here.特别是MARKandSPACEparity,althoughimplementedinm

c++ - 如何将特定网络接口(interface)/Ip 与 Boost Asio 套接字一起使用?

我有一个Debian/linux服务器,它有几个Ip地址,都分配给同一个物理网卡。/etc/network/interfaces配置文件如下所示(xx代表数字)autoloifaceloinetloopbackautoeth0ifaceeth0inetstaticaddress176.xx.xx.144netmask255.255.255.0network176.xx.xx.0broadcast176.xx.xx.255gateway176.xx.xx.254autoeth0:0allow-hotplugeth0:0ifaceeth0:0inetstaticaddress46.xx.x

c++ - Boost.Asio 的可扩展性

我很好奇其他人在可扩展性方面将Boost.Asio推进了多远。我正在编写一个可能使用近1000个套接字对象、少量接受器对象和数千个计时器对象的应用程序。我对其进行了配置,以便有一个线程池调用io_service::run并在适当的位置使用strand以确保我的处理程序不会相互干扰。我的平台是带有Boost1.39的RedHatEnterpriseLinux,但我不反对升级到更新版本的boost。 最佳答案 我们在定时器、网络(TCP和UDP)、串行(20多行,其中两行以500kbps运行)和inotify事件上使用1.39,虽然我们

c++ - 如何将 asio 与设备文件一起使用

我在整个项目中都在使用boostasio。我现在想读取一个设备文件(/dev/input/eventX)。在boostasio文档中,它指出普通文件IO是不可能的,但使用asio::posix::stream_descriptor支持设备文件或管道。我通过open打开文件描述符,赋值给stream_descriptor。我现在发出一个永不返回的async_read()调用。是否可以将boostasio与输入事件一起使用?在通过ioctl将其与asio一起使用之前,我是否需要配置文件句柄?编辑:添加一些示例代码->添加一些示例代码。以下代码打开/dev/input/event12并调用i

c++ - SO_RCVTIME和SO_RCVTIMEO不影响Boost.Asio操作

下面是我的代码boost::asio::io_serviceio;boost::asio::ip::tcp::acceptor::reuse_addressoption(true);boost::asio::ip::tcp::acceptoraccept(io);boost::asio::ip::tcp::resolverresolver(io);boost::asio::ip::tcp::resolver::queryquery("0.0.0.0","8080");boost::asio::ip::tcp::endpointendpoint=*resolver.resolve(que

linux - Boost Asio 的主机名解析如何在 Linux 上工作?是否可以使用 NSS?

当没有网络连接时,我试图让我的联网应用程序在本地工作(服务器和客户端都在同一台计算机上运行)。这似乎偶尔“有效”,但大多数时候我最终会得到:terminatecalledafterthrowinganinstanceof'boost::exception_detail::clone_impl>'what():Hostnotfound(authoritative)Aborted我目前使用的代码是:tcp::resolver::queryquery(host,PORT);tcp::resolver::iteratorendpointIterator=resolver.resolve(que