Trabajo Práctico Integrador - PR - UP
2C - 2024
- Acerca De
- Aplicaciones Utilizadas
- Docker
- Visual Studio Code
- Levantar el proyecto
- Autor
- Reconocimientos
- Repositorio que contiene el trabajo práctico de la materia Programación en Redes de la Universidad de Palermo.
Recomiendo utilizar chocolatey para instalar estos paquetes:
choco install vscode
choco install googlechrome
Recomiendo utilizar homebrew para instalar estos paquetes:
brew install --cask visual-studio-code
brew install --cask google-chrome
brew install --cask docker
Se provee un docker container con todas las tools necesarias para compilación y debugging de aplicaciónes. Para instalar el entorno ejecutar el docker compose detached en el root del proyecto.
docker compose up --build -dUna vez finalizado se puede conectarse por TTY al container con el siguiente comando:
docker exec -it ubuntu-redes bashSalir de docker container:
exitdocker stop ubuntu-redes
docker start -i ubuntu-redes
- Community Edition: https://docs.portainer.io/v/2.20/start/install-ce/server/docker/wsl
username: admin
password: Password1234
- vscode.cpptools-extension-pack
- ms-azuretools.vscode-docker
- s-vscode-remote.remote-containers
- ms-vscode.makefile-tools
- Levantar el container que vamos a utilizar haciendo el mapeo de carpeta local a carpeta dentro de la /home del container.
- En Visual Studio abrir Remote Window y seleccionar "Attach to Running Container". Indicar el que levantamos en el paso anterior. 2.1. Ir en esta ventana a la parte de extensiones del Visual Studio y asegurarse de que estén todas habilitadas.
- Configurar la configuration de debugging del launch.json para que en el program vaya a la ruta del archivo. 3.1. Asegurarse de configurar el "preLaunchTask" para que levante la task de build primero.
- Ir al archivo que queremos hacer debug, ir a la sección run and debug del vscode y seleccionar la configuration.
Recomiendo:
- Cargar los ejemplos o proyectos de código de a uno dentro del container.
- Que cada carpeta con un proyecto tenga su propio .vscode con su launch.json y su tasks.json.
- Que cada proyecto tenga su propio Makefile.
- https://code.visualstudio.com/docs/languages/cpp
- https://code.visualstudio.com/docs/cpp/launch-json-reference
- https://code.visualstudio.com/docs/editor/debugging
- Levantamos en vscode el proyecto.
- Levantamos una terminal que corran nuestra docker image en un docker container.
- Dentro del docker container compilamos (make build) y corremos nuestra aplicación (./dist/).
- Abrir a compose.yml.
- Ir a ports.
- Configurar HOST_PORT:CONTAINER_PORT o "HOST_IP:HOST_PORT:CONTAINER_PORT"
- Luego de crear el container, ejecutar
docker psy verificar que se vea el puerto configurado.
- Aclaración: debemos realizar el bind() a "0.0.0.0" (wildcard address) para exponer el port hacia fuera del docker.
- Más información: https://docs.docker.com/compose/how-tos/networking/
- netstat
netstat -n --inet netstat -l -n --inet netstat -l -n --inet -p netstat -tcp - ps
ps -fea ps -fea | grep netcat - nc/netcat
- Server (listen)
netcat -l localhost 8001 [port] nc -l localhost 80- Client (Connect)
netcat localhost 8001 [port] nc localhost 80 - strace
strace -p 14442 [process_id obtenido con ps -fea] - ifconfig
ifconfig - ss
- watch
watch -n0 ss -t4ane - ls/ll
ll is an alias of ls -l More info: https://unix.stackexchange.com/questions/137703/difference-between-ls-l-and-ll - gcc
gcc sockets.c -o socket ./socket - make
- Si el directorio contiene un Makefile
make - nslookup
nslookup yahoo.com - dig
- lsof
- valgrind
valgrind --leak-check=full --show-leak-kinds=all ./myprog