我尝试制作本教程的网络TS版本:https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio/tutorial/tutdaytime2/src.html
首先,我编译并运行了boost版本,它运行得很好。
然后我写了这样的话:
#include <ctime>
#include <iostream>
#include <string>
#include <experimental/net>
namespace net = std::experimental::net;
/////////////////////////////////////////////////////////////////////////////
std::string make_daytime_string()
/////////////////////////////////////////////////////////////////////////////
{
time_t now = std::time(0);
const std::string result = std::ctime(&now);
std::cout << "sending: " << result << '\n';
return result;
}
/////////////////////////////////////////////////////////////////////////////
int main()
/////////////////////////////////////////////////////////////////////////////
{
try
{
net::io_context io_context;
net::ip::tcp::acceptor acceptor
(
io_context,
net::ip::tcp::endpoint(net::ip::tcp::v4(), 8013)
);
while (true)
{
net::ip::tcp::socket socket(io_context);
acceptor.accept(io_context);
net::write(socket, net::buffer(make_daytime_string()));
}
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
我正在使用网络ts的实现:https://github.com/chriskohlhoff/networking-ts-impl
我正在Ubuntu20.04LTS中使用gcc进行编译。
服务器代码编译并运行。但一旦客户端建立连接,它就会失败,但有以下例外情况:
write: Bad file descriptor
,而客户端没有收到任何东西。我的代码看起来真的和asio的一样。为什么会失败?
net::ip::tcp::socket socket(io_context);
acceptor.accept(io_context);
您将丢弃连接的套接字(并从已经传递给accept
的执行上下文中冗余地构造一个套接字)。
用修复
auto socket = acceptor.accept(io_context);
问题内容: 这是我的整个源代码: 代码卡在了 fmt.Println(“ enq =”,t)上, 但是我不知道为什么,这太奇怪了。 问题答案: deQueue在失败情况下无限循环,这阻塞了CPU。Goroutine在执行CPU工作时不会屈服。GOMAXPROCS必须大于等于2才能获得CPU并行性。 只是为了踢,这是使用高阶通道的线程安全,无阻塞队列实现:https : //gist.github.
根据http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/overview/cpp2011/futures.html,我们可以将boost::asio与一起使用。但是我找不到任何有关使用的信息,它具有更多的功能,例如。我怎么用?
topAncestorElement 的类型是 call 的返回值 undefined; 我希望使用 [].find.call 这种写法,要怎么修改呢? as unknown as HTMLElement 这样断言就行了。之前没注意看提示...
问题内容: 我已经使用Selenium用Java编写了代码。当我运行代码时,它将引发NullPointerException。检查以下异常 我的代码如下: 问题答案: 您会看到一个原因,因为您从一开始就尝试访问该方法,这需要in的活动实例,即to &and perform 方法。 解决方案是先访问该方法,以便您拥有and 的活动实例。接下来,您可以访问方法。 这是您的工作代码块:
我使用Selenium编写了Java代码。当我运行代码时,它会抛出NullPointerException。检查下面的异常 我的代码如下: