• Hetzner + Proxmox проблемы с роутом?

    stronciy
    @stronciy Автор вопроса
    :)

    Просто в шеле написал
    iptables -t nat -D POSTROUTING -s '178.xxx.xxx.96/29' -o eth0 -j MASQUERADE

    проверил, таки да!!! заработало именно так как надо.

    Спасибо, очень выручили!
  • Hetzner + Proxmox проблемы с роутом?

    stronciy
    @stronciy Автор вопроса
    Спасибо за подсказку :)

    Что касается чтения, как раз на хабре прочел все что мог, и Вашу статью в частности. Собственно, воспользовался ей, но только первой половиной. У Вас упор на IP6 а для меня это мутный лес… на хетцнере нашел только эту доку wiki.hetzner.de/index.php/Proxmox_VE/en но там тоже не все для меня ясно.

    Вопрос, как занатить подсеть не через главный адрес?
  • Hetzner + Proxmox проблемы с роутом?

    stronciy
    @stronciy Автор вопроса
    круто, и грамотно… блин это теперь надо пересобирать сервер под ним пару тройку виртуалок, причем как под kvm так и под openvz :(
  • Hetzner + Proxmox проблемы с роутом?

    stronciy
    @stronciy Автор вопроса
    У меня точно срисовано с документации хетцнера:

    post-up iptables -t nat -A POSTROUTING -s '178.xxx.xxx.96/29' -o eth0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '178.xxx.xxx.96/29' -o eth0 -j MASQUERADE

    вроде все пашет, да только с почтой черте что происходит! :(
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    В том-то и дело, что по сути в dll у меня бесконечный поток, точнее сама dll сделана по причине, что под нее есть SDK которая читает и выдает через stdout данный поток, если делать через запись в файл, то придется делать кучу всего, блокировки доступа, события, и так далее… в общем не айс…
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    У MemoryStream тоже нет Handle метода, может можно сделать обертку, но не знаю как…
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    Привет, таким путем тоже не получилось… :(
    Вот нашел такой код, срабатывает отлично и каждый раз, но тут встал другой вопрос, файл?

    using System;
    using System.IO;
    using System.Runtime.InteropServices;

    namespace Redirect
    {
    class Class1
    {
    [ DllImport("Kernel32.dll", SetLastError = true) ]
    public static extern int SetStdHandle(int device, IntPtr handle);

    [ DllImport("SayHello.dll") ]
    public static extern void SayHello();

    [STAThread]
    static void Main(string[] args)
    {
    int status;
    IntPtr handle;
    FileStream fs;
    StreamWriter sw;

    fs = new FileStream("console.txt", FileMode.Create);

    sw = new StreamWriter(fs);
    sw.AutoFlush = true;
    Console.SetOut(sw);

    Console.WriteLine("This is a test of output via C#.");

    handle = fs.Handle;
    status = SetStdHandle(-11, handle);

    SayHello();
    }
    }
    }


    Заменил FileStream на Stream но там нет Handle то есть перенаправить в другой поток не возможно :( только в файл, просто какая-то круговая порука…
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    создаю экземпляр класса, запускаю функцию из дллки затем Finish() с дописанным методом извлечения данных и… пусто ((
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    С чтением из MemoryStream в сторку проблем нету, вот метод:
    public string ReadAll(MemoryStream memStream)
    {
    // Reset the stream otherwise you will just get an empty string.
    // Remember the position so we can restore it later.
    dynamic pos = memStream.Position;
    memStream.Position = 0;

    StreamReader reader = new StreamReader(memStream);
    dynamic str = reader.ReadToEnd();

    // Reset the position so that subsequent writes are correct.
    memStream.Position = pos;

    return str;
    }
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    хм… совсем туплю, а где запускать мой метод из дллки? я добавил его последней строчкой а методе OutToMemory но результата нет (
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    да Вы правы, по сути handle это и делает, а как обойтись без него, из приведенных выше примеров я не совсем ясно это увидел… точнее не понял :)
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    не получится отловить вывод, собственно нужен Handle что бы знал с какой «консоли» stdout брать данные…
    :(
    неужели отловить вывод stdout с dll невозможно?
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    и еще вдогонку, собственно после первого прохода, прога закрывает все Pipes повторный вызов сразу выдает Cannot access a closed pipe
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    не ту кнопку нажал ((
    так вот если закоментировать строку с client.Flush(); при повторном вызове код встает на дыбы в стороке 61, выдает Cannot access a closed pipe.
  • Получить в .NET строку из С++ dll

    stronciy
    @stronciy Автор вопроса
    Не получилось, поправил мелкую ошибку в строке 21
    private static client = new AnonymousPipeClientStream(PipeDirection.In, server.ClientSafePipeHandle);
    нужно указать тип для client
    но не суть, при запуске спотыкается в строке 52 client.Flush(); не поддерживается Flush, если закоментить строки
    client.Flush();