int main(int argc, char *argv[]){ if (!ros::isInitialized()) { int argc = 0; char **argv = NULL; ros::init(argc, argv, "ROS_MASTER_URI_receiver"); } // create the IP broadcast Socket UDPSocketPtr receiver_socket = UDPSocketPtr(new UDPSocket(BROADCAST_PORT, false)); uint32_t status = 0; while(status!=3 && !ros::master::check()){ usleep(1000000); printf("listening for HOST IP\n"); uint32_t host_IP; status = receiver_socket->receiveHostIP(key,host_IP); if(status==3){ char IP[16]; receiver_socket->convertByte2Text(host_IP,IP); ROS_INFO("Received HOST IP: %s",IP); char ros_master_uri[100]; sprintf(ros_master_uri, "ROS_MASTER_URI=http://%s:11311",IP); printf("%s\n",ros_master_uri); putenv(ros_master_uri); } } system (argv[1]); }
UDPSocketPtr SocketUtil::CreateUDPSocket( SocketAddressFamily inFamily ) { SOCKET s = socket( inFamily, SOCK_DGRAM, IPPROTO_UDP ); if( s != INVALID_SOCKET ) { return UDPSocketPtr( new UDPSocket( s ) ); } else { ReportError( "SocketUtil::CreateUDPSocket" ); return nullptr; } }