|
@@ -1,26 +1,53 @@
|
|
package main
|
|
package main
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "bufio"
|
|
"fmt"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
"net"
|
|
"net"
|
|
"os"
|
|
"os"
|
|
"strconv"
|
|
"strconv"
|
|
|
|
+ "strings"
|
|
)
|
|
)
|
|
|
|
|
|
-func main() {
|
|
|
|
- if len(os.Args) != 3 {
|
|
|
|
- fmt.Println("usage: %s ip-address\n", os.Args[0])
|
|
|
|
- os.Exit(1)
|
|
|
|
|
|
+// 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))
|
|
}
|
|
}
|
|
|
|
|
|
- port, _ := strconv.Atoi(os.Args[2])
|
|
|
|
- OpenRequestIPV4(os.Args[1], port)
|
|
|
|
|
|
+ c.Close()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// OpenRequestIPV4 Opens a request to an ipv4 tcp network address
|
|
// OpenRequestIPV4 Opens a request to an ipv4 tcp network address
|
|
-func OpenRequestIPV4(ipv4Address string, port int) {
|
|
|
|
|
|
+func OpenRequestIPV4(ipv4Address string, port int) string {
|
|
|
|
|
|
service := ipv4Address + ":" + strconv.Itoa(port)
|
|
service := ipv4Address + ":" + strconv.Itoa(port)
|
|
tcpv4Addr, _ := net.ResolveTCPAddr("tcp", service)
|
|
tcpv4Addr, _ := net.ResolveTCPAddr("tcp", service)
|
|
@@ -29,12 +56,26 @@ func OpenRequestIPV4(ipv4Address string, port int) {
|
|
|
|
|
|
result, _ := ioutil.ReadAll(conn)
|
|
result, _ := ioutil.ReadAll(conn)
|
|
|
|
|
|
- fmt.Println(string(result))
|
|
|
|
-
|
|
|
|
- os.Exit(0)
|
|
|
|
|
|
+ return string(result)
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
func checkError(err error) {
|
|
func checkError(err error) {
|
|
- fmt.Println(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)
|
|
|
|
+
|
|
}
|
|
}
|