func main() { args := os.Args if len(args) != 4 { fmt.Println("Usage: [aserver UDP ip:port] [fserver RPC ip:port] [secret]") os.Exit(-1) } aserverUDPIpPort := args[1] fserverRCPIpPort := args[2] secret := parseSecretArg(args[3]) udpListener := clientServerUtils.InitUDPConn(aserverUDPIpPort) //Initialize hash table of (udpIpPort, nonce) key-value pairs var nonceMap clientServerUtils.ConcurrentMap nonceMap.Map = make(map[string]int64) //Start listen/receive connection loop for { var buf [1024]byte msgLen, clientUDPAddr, err := udpListener.ReadFromUDP(buf[:]) if err != nil { fmt.Println("Error on ReadFromUDP: ", err) } else { go handleUDPConn(udpListener, clientUDPAddr, fserverRCPIpPort, nonceMap, secret, buf[0:msgLen]) } } udpListener.Close() }