так задача состоит в том чтобы просто подключиться к openvpn, а на выходе получить ip socks5
Т.е. вы не собираетесь использовать сам socks5 как прокси, вам нужен только его IP?
Зачем в этом случае вообще упоминать socks5? Для подмены IP достаточно поднять NAT и пускать трафик через него.
Но не знаю как
Это делается:
- установкой socks5 сервера шлюзом по умолчанию. Но имейте ввиду, что при этом могут отвалится другие сервисы, которые работают через ваш текущий шлюз по умолчанию. Чтоб этого не происходило, нужно вручную добавить нужные маршруты в таблицу маршрутизации.
- перенаправлением трафика правилами фаервола
Fenix957, По идее ВПН создает интерфейсы, их и используйте.
На счет разных программ в разные каналы, копайте в сторону множественных таблиц маршрутизации (fib).
И через какого клиента собираетесь выходить в инет, если у каждого из них есть доступ?
Вам нужно прописать шлюзом по умолчанию выбранного клиента.
Как это делать нужно смотреть по тому какой вариант ВПН используете.
Михаил Усоцкий, Что показывает менеджер задач в это время? Может что-то другое отъедает процессор.
Загляните в event viewer, возможно есть какие-то ошибки системы. Например, может диск потихоньку умирает, от этого могут быть тормоза.
Кстати, другой софт как себя ведет на этом компе?
На сколько я помню матлаб не требует предустановленной Javы - она у него есть своя в комплекте.
С подобным поведением матлаба не сталкивался.
Возможно что-то мешает работе матлаба. Может быть антивирус. Может проц слабый для матлаба или памяти мало. Все таки это довольно прожорливый софт.
Добавлю от себя:
Все же не стоит отключать UAC, это полезная штука в плане безопасности пользования системой. Давите ваше желание работать всегда с админскими правами - в 99% времени вам они не нужны.
В линуксах давно уже отключают rootа, а что бы получить rootовые права нужно запускать программы из-под sudo. Такое поведение - практически аналог работы UACа.
Так что это устоявшаяся практика в большинстве современных ОС.
Согласен, но есть нюансы:
В Qt лицензирование идет по модулям (или компонентам), не помню уже как в Qt эти вещи называются. А не целиком на библиотеку.
Часть модулей лицензированы под LGPL, другие под GPL, а третьи вообще проприетарные.
Если хочется бесплатно и не открывать коды, то нужно использовать только LGPL модули с динамической линковкой.
Если готовы открыть коды, то годятся LGPL и GPL и любая линковка. Кстати, коды, открываются только легальным пользователям, т.е. тому кто купил у вас ПО. Обычным "смертным", не купившим ПО, можно ничего не открывать.
Если не хотите открывать коды и нужны GPL или платные модули, то придется покупать.
На сайте Qt в документации по каждому модулю нужно смотреть его лицензию.
Наиболее широко применяемые для GUI модули лицензируются под LGPL.
Денис Ахунов, Кстати, похоже UTF8 в консоли Вин10 починили. Прогресс не стоит на месте :)
Но это не отменяет моих рекомендаций по поводу того, что менять кодировку консоли из программы - это плохо. А так же не отменяет того, что по умолчанию в консоли используется кодировка cp866.
Консоль не нужно в UTF8. cmd.exe с давних пор не дружит с UTF8 (знаю про это еще со времен WinXP). Не в том смысле, что не может туда выводить текст, а в том, что в этой кодировке она перестает нормально работать, т.е. не выполняет введенные команды и т.п. На сколько помню в Вин10 это так и не починили, хотя я давно уже не интересовался.
Поэтому ваш вариант в консоли либо 1251, либо 866.
как это сделать?
А оно вам нужно? У вас же
Вроде как всё работает
.
Как сделать уже было написано выше.
Узнать кодировку консоли GetConsoleCP, перекодировать MultiByteToWideChar. В общем идите в MSDN, там по Windows Console API целый раздел есть.
А исходники, оставляйте в UTF8. Для хранения UTF8 используйте wchar_t* или (wstring и т.п.). Когда строка перекодируется из UTF8 в 1251, то она становится char* или string.
Денис Ахунов, Почему бы ему и не работать. Для тестовой задачи или лабы может и сгодится.
Хотя все будет зависеть от того как будет использоваться приложение.
Суть в том, что так вы меняете настройки внешнего окружения (кодировку консоли). Но само внешнее окружение может быть не готово работать с вашей кодировкой.
Например если входные данные будут подаваться в приложение из файла с помощью перенаправления стандартного ввода, а файл будет в другой кодировке (например в cp866), то SetConsoleCP(1251) не приведет к перекодировке файла и вы прочитаете данные в неправильной кодировке и все опять развалится.
Кроме того менять настройки консоли из программы - создавать дополнительные проблемы пользователям программы. Например вы пишете какую-то утилиту командной строки, которую наверняка будут использовать для автоматизации чего-либо во внешних скриптах и т.п. Писатель скриптов планирует везде использовать подходящую для него кодировку, а вы принудительно в своей утилите используете 1251, пользователю придется предпринимать какие-то дополнительные действия, чтобы использовать вашу программу.
Правильный подход - узнать текущую кодировку консоли и перекодировать весь ввод и вывод в эту кодировку.
Это все лирические отступления, чтоб вы осознали глубину проблемы :-)
Дмитрий Павлов, Надо было дать эту ссылку, гораздо полезней. Денис Ахунов, Лично я за последний вариант, который описан по ссылке выше (перекодировка).
Но если у вас какой-то учебный проект и не хочется запариваться с перекодировкой, то можно использовать "Самый простой (и самый неудобный) способ" по ссылке выше. Кстати, не понятно, что особо не удобного автор нашел в этом способе.
PS: WinAPI не ограничивается только описанными в статье функциями перекодировки, я бы предложил использовать более универсальный вариант: MultiByteToWideChar и ее двойника WideCharToMultiByte/
Mercury13, Добавление отладочной информации только раздувает размер исполняемого файла, на код не влияет. Часто полезно оставлять отладочную информацию. Например в случае core dump в линуксе - можно больше информации получить в gdb, не имея исходников. Видел много достаточно крупных проектов, у которых -g используется в релизе.
Можно, конечно. Только это не избавляет от самого switchа.
В моем предложении вместо свича, остается что-то типа table_func[op](args)
В принципе это с натяжкой можно считать некоей вариацией паттерна стратегия в процедурном стиле.
Можете функции заменить на классы, с общим интерфейсом и точно так же вызывать метод класса, роли это не играет.
Т.е. вы не собираетесь использовать сам socks5 как прокси, вам нужен только его IP?
Зачем в этом случае вообще упоминать socks5? Для подмены IP достаточно поднять NAT и пускать трафик через него.
Это делается:
- установкой socks5 сервера шлюзом по умолчанию. Но имейте ввиду, что при этом могут отвалится другие сервисы, которые работают через ваш текущий шлюз по умолчанию. Чтоб этого не происходило, нужно вручную добавить нужные маршруты в таблицу маршрутизации.
- перенаправлением трафика правилами фаервола