diff --git a/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_client.sh b/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_client.sh index 047541a8a..23cd0f440 100755 --- a/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_client.sh +++ b/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_client.sh @@ -1,5 +1,3 @@ #!/bin/bash -lsof -i :50051 | awk 'NR!=1 {print $2}' | xargs kill -9 - ./aimrt_main --cfg_file_path=./cfg/examples_plugins_grpc_plugin_pb_rpc_client_cfg.yaml diff --git a/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_server.sh b/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_server.sh index 4a985f5fd..d743daf02 100755 --- a/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_server.sh +++ b/src/examples/plugins/grpc_plugin/install/linux/bin/start_examples_plugins_grpc_plugin_pb_rpc_server.sh @@ -1,5 +1,3 @@ #!/bin/bash -lsof -i :50050 | awk 'NR!=1 {print $2}' | xargs kill -9 - ./aimrt_main --cfg_file_path=./cfg/examples_plugins_grpc_plugin_pb_rpc_server_cfg.yaml diff --git a/src/plugins/grpc_plugin/server/server.h b/src/plugins/grpc_plugin/server/server.h index bd3240fe8..68b3e6011 100644 --- a/src/plugins/grpc_plugin/server/server.h +++ b/src/plugins/grpc_plugin/server/server.h @@ -67,6 +67,9 @@ class AsioHttp2Server : public std::enable_shared_from_this { options_ = ServerOptions::Verify(options); connection_options_ptr_ = std::make_shared(options_); + + AIMRT_CHECK_ERROR_THROW(CheckListenAddr(options_.ep), + "{} is already in use.", aimrt::common::util::SSToString(options_.ep)); } void Start() { @@ -173,6 +176,17 @@ class AsioHttp2Server : public std::enable_shared_from_this { connection_ptr_list_.clear(); } + private: + static bool CheckListenAddr(const boost::asio::ip::tcp::endpoint& ep) { + try { + IOCtx io; + Tcp::acceptor acceptor(io, ep); + return true; + } catch (...) { + return false; + } + } + private: enum class State : uint32_t { kPreInit,