Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "encoding/json"
- "fmt"
- "io/ioutil"
- "net"
- "os"
- )
- type Packet struct {
- Data string
- PacketType int
- SeqNum int
- WindowSize int
- AckNum int
- }
- type Data struct {
- Data string
- Size int
- }
- type Addresses struct {
- ClientIP string
- ClientPort string
- NetworkIP string
- NetworkPort string
- ServerIP string
- ServerPort string
- }
- func main() {
- configFileName := os.Args[1]
- // open and read the config file
- configFileString, err := ioutil.ReadFile(configFileName)
- if err != nil {
- panic(err)
- }
- var addy Addresses
- //parse the config file to the addresses struct
- _ = json.Unmarshal(configFileString, &addy)
- fmt.Println("Dial Server")
- //call up the server for a conection
- //conServer, _ := net.DialUDP("udp", addy.ServerIP+":"+addy.ServerPort)
- ipa := net.ParseIP("127.0.0.1")
- var networkToClient = net.UDPAddr{ipa, 7005, "0"}
- var clientToNetwork = net.UDPAddr{ipa, 7015, "0"}
- var networkToServer = net.UDPAddr{ipa, 7007, "0"}
- var serverToNetwork = net.UDPAddr{ipa, 7017, "0"}
- //DialUDP(net string, laddr, raddr *UDPAddr)
- conServer, _ := net.DialUDP("udp4", &serverToNetwork, &networkToServer)
- //Listen for packets
- fmt.Println("Dial to Client")
- conClient, _ := net.DialUDP("udp4", &clientToNetwork, &networkToClient)
- //tell them to start
- initPacket := Packet{"", 0, 0, 0, 0}
- jsoninitPacket, err := json.Marshal(initPacket)
- if err != nil {
- panic(err)
- }
- go forwardToServer(conClient, conServer)
- //go forwardToClient(conServer, conClient)
- conClient.Write(jsoninitPacket)
- conServer.Write(jsoninitPacket)
- for {
- }
- }
- func forwardToServer(client *net.UDPConn, server net.Conn) {
- fmt.Println("forwardToServer started")
- for {
- packet := make([]byte, 2048)
- fmt.Println("Reading from Client")
- //copy byte array(sock)
- n, _, err := client.ReadFromUDP(packet)
- if err != nil {
- fmt.Println(err)
- }
- if n >= 2048 {
- fmt.Println("packet buffer too small")
- }
- fmt.Println("Writing to Server")
- //write to server
- _, err = server.Write(packet)
- if err != nil {
- fmt.Println(err)
- }
- }
- }
- func forwardToClient(client net.Conn, server net.Conn) {
- fmt.Println("forwardToClient started")
- for {
- packet := make([]byte, 2048)
- fmt.Println("Reading from Server")
- //copy byte array(sock)
- n, err := server.Read(packet)
- if err != nil {
- fmt.Println(err)
- }
- if n >= 2048 {
- fmt.Println("packet buffer too small")
- }
- fmt.Println("Writing to Client")
- //write to server
- _, err = client.Write(packet)
- if err != nil {
- fmt.Println(err)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement