package main import ( "bufio" "fmt" "io/ioutil" "net" "os" "strconv" "strings" ) // TCP4Server will open listeners and create Go Handlers func TCP4Server(port int) { service := "127.0.0.1:" + strconv.Itoa(port) fmt.Printf("Trying to server on %s\n\n", service) listener, err := net.Listen("tcp4", service) checkError(err) defer listener.Close() for { c, err := listener.Accept() checkError(err) go ServerHandler(c) } } // ServerHandler will receive data from the socket and answer to it func ServerHandler(c net.Conn) { for { r := bufio.NewReader(c) aux, err := r.ReadString('\n') checkError(err) result := strings.TrimSpace(aux) fmt.Println(string(result)) answer := OpenRequestIPV4(result, 80) c.Write([]byte(answer)) } c.Close() } // OpenRequestIPV4 Opens a request to an ipv4 tcp network address func OpenRequestIPV4(ipv4Address string, port int) string { service := ipv4Address + ":" + strconv.Itoa(port) tcpv4Addr, _ := net.ResolveTCPAddr("tcp", service) conn, _ := net.DialTCP("tcp4", nil, tcpv4Addr) _, _ = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\nGet index.html")) result, _ := ioutil.ReadAll(conn) return string(result) } func checkError(err error) { if err != nil { fmt.Println(err.Error()) os.Exit(1) } } func main() { /*if len(os.Args) != 3 { fmt.Println("usage: %s ip-address\n", os.Args[0]) os.Exit(1) }*/ //port, _ := strconv.Atoi(os.Args[2]) //OpenRequestIPV4(os.Args[1], port) TCP4Server(15232) }