{"id":95,"date":"2020-06-29T18:43:10","date_gmt":"2020-06-29T17:43:10","guid":{"rendered":"http:\/\/blog.uclm.es\/felixvillanueva\/?p=95"},"modified":"2020-06-29T18:43:10","modified_gmt":"2020-06-29T17:43:10","slug":"configuracion-del-entorno-vscode-y-ejecucion-de-ejemplos-en-ns3","status":"publish","type":"post","link":"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/29\/configuracion-del-entorno-vscode-y-ejecucion-de-ejemplos-en-ns3\/","title":{"rendered":"Configuraci\u00f3n del entorno (VScode) y ejecuci\u00f3n de ejemplos en NS3"},"content":{"rendered":"<p><b>Actualizado a la versi\u00f3n 3.36<\/b> (Mayo 2022)<br \/>\nMi recomendaci\u00f3n antes de nada, una vez <a href=\"https:\/\/www.nsnam.org\/wiki\/Installation\"> instalado NS3<\/a> y comprobado que funciona mediante el paso de los correspondientes test (un paso imprescindible), es que configures un entorno de desarrollo adecuado para maximizar tu productividad. Un buen editor de c\u00f3digo fuente es <a href=\"https:\/\/code.visualstudio.com\/\">Visual Studio Code<\/a><\/p>\n<p>En Linux, si abres el editor dentro del directorio de ns3 (en mi caso ns-3.36):<br \/>\n<code><br \/>\n~\/tools\/ns-allinone-3.36\/ns-3.36\/$code .<br \/>\n<\/code><br \/>\nse crea una carpeta .vscode con un archivo c_cpp_properties.json. En ese archivo tenemos que a\u00f1adir la ruta donde est\u00e1n los .h, el auto completado se habilitar\u00e1:<br \/>\n<code><br \/>\n{<br \/>\n\"configurations\": [<br \/>\n{<br \/>\n\"name\": \"Linux\",<br \/>\n\"includePath\": [<br \/>\n\"${workspaceFolder}\/build\/include\/ns3\/**\",<br \/>\n\"\/home\/felix\/tools\/ns-allinone-3.36\/ns-3.36\/build\"<br \/>\n],<br \/>\n\"defines\": [],<br \/>\n\"compilerPath\": \"\/usr\/bin\/clang-11\",<br \/>\n\"cStandard\": \"c17\",<br \/>\n\"cppStandard\": \"c++14\",<br \/>\n\"intelliSenseMode\": \"linux-clang-x64\",<br \/>\n\"compileCommands\": \"${workspaceFolder}\/cmake-cache\/compile_commands.json\"<br \/>\n}<br \/>\n],<br \/>\n\"version\": 4<br \/>\n}<\/code><\/p>\n<p>Una buena forma de empezar es ejecutar aquellos ejemplos que m\u00e1s te interesen del directorio examples.<br \/>\nPor ejemplo (En negrita los comandos ejecutados):<br \/>\n<code><br \/>\nns-3.36$ <b>.\/ns3 run wifi-simple-adhoc<\/b><br \/>\n...<br \/>\nTesting 1 packets sent with receiver rss -80<br \/>\nReceived one packet!<br \/>\n<\/code><br \/>\nSi editas los ejemplos, ahora podr\u00e1s ver qu\u00e9 m\u00e9todos y argumentos tiene cada objeto que manipules en tu simulaci\u00f3n. Si no lo ves es que tienes las sugerencias deshabilitadas. Puedes habilitarlas siguiendo <a href=\"https:\/\/code.visualstudio.com\/docs\/editor\/intellisense\">estas instrucciones<\/a><\/p>\n<p>Tus trabajos se har\u00e1n en el directorio scratch. En el caso de los ejemplos (dentro del directorio examples) que vienen con NS3 no es necesario copiarlos en el directorio scratch y se pueden ejecutar directamente.<\/p>\n<p>El script ns3 es una herramienta de configuraci\u00f3n y compilaci\u00f3n escrita en python y que es usado en el proyecto NS3 para hacer de interface con el sistema cmake. Se puede usar para configurar y construir el propio NS3.<\/p>\n<p>De momento, nosotros solo nos interesa para compilar y ejecutar nuestros ejemplos. Dentro del directorio de ns3  (~\/tools\/ns-allinone-3.36\/ns-3.36 en mi caso), la sintaxis del comando a ejecutar es:<br \/>\n<code><br \/>\n<b>ns-3.36$.\/ns3 run ejemplo<\/b><br \/>\n<\/code><br \/>\nSi no es un ejemplo de los que vienen con ns3, buscar\u00e1 ejemplo.cc en el directorio scratch, lo compilar\u00e1 y lo ejecutar\u00e1.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualizado a la versi\u00f3n 3.36 (Mayo 2022) Mi recomendaci\u00f3n antes de nada, una vez instalado NS3 y comprobado que funciona mediante el paso de los correspondientes test (un paso imprescindible), es que configures un entorno de desarrollo adecuado para maximizar &hellip; <a href=\"https:\/\/blog.uclm.es\/felixvillanueva\/2020\/06\/29\/configuracion-del-entorno-vscode-y-ejecucion-de-ejemplos-en-ns3\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":182,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4,5],"tags":[12,16,21,30],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-ejemplos","category-ns3","category-simulacion","tag-code","tag-configuracion","tag-ejemplos","tag-ns3"],"_links":{"self":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/users\/182"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":0,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.uclm.es\/felixvillanueva\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}