SuperUser 5 năm trước cách đây
mục cha
commit
7ea1d88001
3 tập tin đã thay đổi với 29 bổ sung26 xóa
  1. 1 1
      .vscode/launch.json
  2. 28 25
      main.go
  3. BIN
      vnet.exe

+ 1 - 1
.vscode/launch.json

@@ -11,7 +11,7 @@
             "mode": "auto",
             "program": "${fileDirname}",
             "env": {},
-            "args": ["192.168.1.121:8181","10.9.9.9"]
+            "args": ["localhost","10.8.8.8"]
         }
     ]
 }

+ 28 - 25
main.go

@@ -7,10 +7,10 @@ import (
 	"github.com/songgao/water"
 	"log"
 	"net"
-	"net/http"
 	"os"
 	"os/exec"
 	"strings"
+	 "bufio"
 )
 
 var (
@@ -23,11 +23,31 @@ var ifce, _ = water.New(water.Config{
 
 func main() {
 	//create http server
-	http.HandleFunc("/rcv", rcv)
-	go func() {
-		http.ListenAndServe(":8181", nil)
+	go func(){
+		fmt.Println("Launching server...")
+		// listen on all interfaces
+		ln, _ := net.Listen("tcp", ":8081")
+		// accept connection on port
+		conn, _ := ln.Accept()
+		// run loop forever (or until ctrl-c)
+		for {
+			// will listen for message to process ending in newline (\n)
+			message, _ := bufio.NewReader(conn).ReadString('\n')
+			// output message received
+			fmt.Print("RECV<<",  string(message))
+			data, err := hex.DecodeString( strings.ReplaceAll("\n","",string(message)))
+			if err != nil {
+				//log.Println(err)
+			}
+			//log.Println("RECV<<", data)
+			ifce.Write(data)
+		}
 	}()
 
+	//declare server
+	// connect to server
+	conns, _ := net.Dial("tcp",os.Args[1]+":8081")
+
 	var frame ethernet.Frame
 	setupIfce(net.IPNet{IP: self, Mask: mask}, ifce.Name())
 
@@ -38,13 +58,15 @@ func main() {
 			log.Fatal(err)
 		}
 		frame = frame[:n]
-		log.Println("TRSV>>", frame)
-
+		log.Println("TRSV>>", hex.EncodeToString(frame))
+/*
 		log.Printf("Dst: %s\n", frame.Destination())
 		log.Printf("Src: %s\n", frame.Source())
 		log.Printf("Ethertype: % x\n", frame.Ethertype())
 		log.Printf("Payload: % x\n", frame.Payload())
 		log.Printf("HEX: % x\n", frame)
+*/
+		fmt.Fprintf(conns, hex.EncodeToString(frame) + "\n")
 		/*
 			a := hex.EncodeToString(frame)
 
@@ -58,25 +80,6 @@ func main() {
 	}
 }
 
-func rcv(w http.ResponseWriter, req *http.Request) {
-	fmt.Fprintf(w, "OK\n")
-	x, ok := req.URL.Query()["packet"]
-	if !ok || len(x[0]) < 1 {
-		fmt.Println("Url Param 'packet' is missing")
-		return
-	} else {
-		log.Println("Reciving data!!!")
-	}
-	data, err := hex.DecodeString(x[0])
-	if err != nil {
-		log.Println(err)
-	}
-	log.Println("RECV<<", data)
-	ifce.Write(data)
-	if err != nil {
-		log.Fatal(err)
-	}
-}
 
 func setupIfce(ipNet net.IPNet, dev string) {
 	sargs := fmt.Sprintf("interface ip set address name=REPLACE_ME source=static addr=REPLACE_ME mask=REPLACE_ME gateway=none")

BIN
vnet.exe