123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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)
- }
|