yeungalan 4 роки тому
батько
коміт
99f05e32ba
1 змінених файлів з 27 додано та 22 видалено
  1. 27 22
      main.go

+ 27 - 22
main.go

@@ -4,60 +4,65 @@ import (
 	"bufio"
 	"encoding/hex"
 	"fmt"
-	"github.com/songgao/packets/ethernet"
-	"github.com/songgao/water"
 	"log"
 	"net"
 	"os"
 	"os/exec"
 	"strings"
 	"time"
+
+	"github.com/songgao/packets/ethernet"
+	"github.com/songgao/water"
 )
 
+//declare IP and subnet mask here
 var (
 	self = net.ParseIP(os.Args[2])
 	mask = net.IPv4Mask(255, 255, 255, 0)
 )
+
+//declare new interface here
 var ifce, _ = water.New(water.Config{
 	DeviceType: water.TAP,
 })
 
-var RCV_B = 0
-var TXT_B = 0
-var RCV_T = 0
-var TXT_T = 0
+var RCV_B = 0 //recived in byte
+var TXT_B = 0 //sent in byte
+var RCV_T = 0 //number of packet recived
+var TXT_T = 0 //number of packet sended
 
 func main() {
 	//for stat only
 	go func() {
 		for {
+			//showing statistics here, every 5 seconds
 			log.Println("Total recived: ", ByteCountSI(RCV_B), ", Total transmited: ", ByteCountSI(TXT_B))
 			log.Println("Total recived: ", RCV_T, ", Total transmited: ", TXT_T)
 			time.Sleep(5 * time.Second)
 		}
 	}()
 
-	//create http server
+	//create socket server
 	go func() {
-		fmt.Println("Launching server...")
+		fmt.Println("Launching server...") //show debug message
 		// listen on all interfaces
-		ln, _ := net.Listen("tcp", ":8081")
+		ln, _ := net.Listen("tcp", ":8081") //create new interface
 		// accept connection on port
-		conn, _ := ln.Accept()
+		conn, _ := ln.Accept() //accept connections
 		// 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))
-			RCV_B += len(string(message))
-			RCV_T++
-			data, err := hex.DecodeString(strings.ReplaceAll("\n", "", string(message)))
+			RCV_B += len(string(message))                                                //for statistics
+			RCV_T++                                                                      //for statistics
+			data, err := hex.DecodeString(strings.ReplaceAll("\n", "", string(message))) //since data had \n, so replace it and convert to hex array
 			if err != nil {
 				//log.Println(err)
 			}
 			//log.Println("RECV<<", data)
-			ifce.Write(data)
+			ifce.Write(data) //write to interface
 		}
 	}()
 
@@ -65,19 +70,19 @@ func main() {
 	// connect to server
 	conns, _ := net.Dial("tcp", os.Args[1]+":8081")
 
-	var frame ethernet.Frame
-	setupIfce(net.IPNet{IP: self, Mask: mask}, ifce.Name())
+	var frame ethernet.Frame                                //declare frame
+	setupIfce(net.IPNet{IP: self, Mask: mask}, ifce.Name()) //setup interface info
 
 	for {
-		frame.Resize(1500)
-		n, err := ifce.Read([]byte(frame))
+		frame.Resize(1500)                 //MTU = 1500
+		n, err := ifce.Read([]byte(frame)) //read from ifce
 		if err != nil {
 			log.Fatal(err)
 		}
-		frame = frame[:n]
+		frame = frame[:n] //fconvert frame to usabele array
 		//log.Println("TRSV>>", hex.EncodeToString(frame))
-		TXT_B += len(hex.EncodeToString(frame))
-		TXT_T++
+		TXT_B += len(hex.EncodeToString(frame)) //for statistics
+		TXT_T++                                 //for statistics
 		/*
 			log.Printf("Dst: %s\n", frame.Destination())
 			log.Printf("Src: %s\n", frame.Source())
@@ -85,7 +90,7 @@ func main() {
 			log.Printf("Payload: % x\n", frame.Payload())
 			log.Printf("HEX: % x\n", frame)
 		*/
-		fmt.Fprintf(conns, hex.EncodeToString(frame)+"\n")
+		fmt.Fprintf(conns, hex.EncodeToString(frame)+"\n") //send to server
 		/*
 			a := hex.EncodeToString(frame)