]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Add GetIpByHostname() for DataZMQ vuzlov/26459
authorViktor UZLOV <vuzlov@debian10-01.nnov.opencascade.com>
Tue, 2 Nov 2021 12:09:53 +0000 (15:09 +0300)
committerViktor UZLOV <vuzlov@debian10-01.nnov.opencascade.com>
Tue, 2 Nov 2021 12:09:53 +0000 (15:09 +0300)
src/Basics/Basics_Utils.cxx
src/Basics/Basics_Utils.hxx
src/SalomeZeroMQ/CMakeLists.txt
src/SalomeZeroMQ/SalomeZeroMQ.cxx

index e421e60624b14a5a32e805c80a32a38e4f90440a..dd6fc7addab7a10f6f0299dbf4807ef0bde228be 100644 (file)
@@ -32,6 +32,8 @@
 #include <execinfo.h>
 #endif
 
+#include <netdb.h>
+#include <arpa/inet.h>
 #include <memory>
 #include <functional>
 
@@ -83,6 +85,14 @@ namespace Kernel_Utils
     return p;
   }
 
+  std::string GetIpByHostname() {
+    std::string host = GetHostname();
+    hostent* hostname = gethostbyname(host.c_str());
+    if(hostname)
+        return std::string(inet_ntoa(**(in_addr**)hostname->h_addr_list));
+    return {};
+  }
+
   Localizer::Localizer()
   {
     init(LC_NUMERIC, "C");
index 1f3e451253aecf2796f8eaf8b3550cb4b13e3dcf..6caa60974f1cc72af7d129841c0df921fd0e88e9 100644 (file)
@@ -44,6 +44,7 @@
 namespace Kernel_Utils
 {
   BASICS_EXPORT std::string GetHostname();
+  BASICS_EXPORT std::string GetIpByHostname();
 
   class BASICS_EXPORT Localizer
   {
index ee41f00d33323ec5d304461cb94365206352c6cd..602ef261a3c47c949bc135600e7eba12f14822dc 100644 (file)
@@ -22,6 +22,7 @@ INCLUDE_DIRECTORIES(
   ${ZeroMQ_INCLUDE_DIR}
   ${PYTHON_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/../Basics
 )
 
 # libraries to link to
index efc0c6f3ac1ea8d269cf27b049fdb4d6f1e45eb8..b7b5313bf17413d7c2865e2cf825cafc4d3795e0 100644 (file)
 #include <iostream>
 
 #include "SalomeZeroMQ.hxx"
+#include "Basics_Utils.hxx"
 
 DataZMQ::DataZMQ()
 {
   this->cont = zmq::context_t(1);
-  this->addr = "inproc://hello";
+  this->addr = "tcp://" + Kernel_Utils::GetIpByHostname() + ":*";
   this->sock = zmq::socket_t(this->cont, zmq::socket_type::pair);
 }
 
@@ -34,14 +35,14 @@ void DataZMQ::connectDataZMQ()
   char port[1024];
   size_t size = sizeof(port);
   try{
-    this->sock.bind("tcp://*:*");
+    this->sock.bind(this->addr);
+    sock.getsockopt( ZMQ_LAST_ENDPOINT, &port, &size );
+    std::cout << "socket is bound at port " << port << std::endl;
+    this->addr = std::string(port);
   }
   catch (zmq::error_t&e ){
     std::cerr << "couldn't bind to socket: " << e.what();
   }
-  sock.getsockopt( ZMQ_LAST_ENDPOINT, &port, &size );
-  std::cout << "socket is bound at port " << port << std::endl;
-  this->addr = std::string(port);
 }
 
 void DataZMQ::sendDataZMQ(const char* data, int len)