Una recomendación para la vida real, no utilicéis como nombre de variable “i” cuando se hace referencia a puerto, mejor utilizar el nombre “port”. Cuanto más explícito sea el código, más fácil será de leer y entender para el resto del mundo 😃
Introducción
Cómo aprender Go avanzado: concurrencia, patrones de diseño y net
Concurrencia
Race condition: el problema de depositar y retirar
Sync Mutex: Lock y Unlock
Mutex de lectura y escritura
Sistema de caché sin concurrencia
Sistema de caché con concurrencia
Reutilización de computación intensiva
Patrones de diseño
¿Qué son los patrones de diseño?
Factory
Singleton
Adapter
Observer
Strategy
Net
Escaneador de puertos sin concurrencia
Escaneador de puertos con concurrencia
Netcat
Servidor de chat en Go con net
Terminando el chat
Conclusión
Resumen del curso de Go avanzado
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 5
Preguntas 0
Una recomendación para la vida real, no utilicéis como nombre de variable “i” cuando se hace referencia a puerto, mejor utilizar el nombre “port”. Cuanto más explícito sea el código, más fácil será de leer y entender para el resto del mundo 😃
package main
import (
"fmt"
"net"
)
func main() {
// Escanear cada puerto y hacer una conexión
for i := 0; i < 100; i++ {
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", "scanme.nmap.org", i))
if err != nil {
continue
}
conn.Close()
fmt.Println("Port", i, "is open")
}
}
Por alguna razón cuando intento conectarme al puerto 0 queda cargando, sin tirarme ningún timeout. Para omitir este puerto sin cambiar mucho el código, simplemente arranqué el bucle for desde el indice 1.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?