rpc client 使用 local_endpoint(...) 后,无法重新绑定端口
RealMG opened this issue · comments
第一次Startup(...)会成功,Shutdown()后,再次使用相同的参数Startup会报错,如不调用local_endpoint(...),目前来看没什么问题,但是请问该如何设置本地端口?
p_bool RpcTerminal::Startup(const p_string& host, const p_string& port, const p_string& local_port)
{
if (rpc_client_ == p_nullptr)
{
rpc_client_ = std::make_unique<asio2::rpc_client>();
}
rpc_client_->default_timeout(std::chrono::seconds(kDefaultRpcClientCallTimeoutInSec));
if (rpc_client_->is_started())
{
return true;
}
rpc_client_->local_endpoint(asio::ip::tcp::v4(), atoi(local_port.c_str()));
//TODO: Implement the callbacks.
rpc_client_->bind_connect([&](asio::error_code ec) {})
;
return rpc_client_->start(host, port);
}
void RpcTerminal::Shutdown()
{
if (rpc_client_ != p_nullptr)
{
rpc_client_->stop();
rpc_client_ = p_nullptr;
}
}
测试不适用local_endpoint设置端口,可以在server端看到client端口号,在client端Shutdown()后,可以netstat出对应的端口一直在TIME_WAIT状态。