adding in main logic for ping pong

This commit is contained in:
talksik
2023-10-08 12:40:06 -07:00
commit 72ad1ff2d0
3 changed files with 101 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
package main
import (
"fmt"
"net"
"time"
)
func main() {
serverAddr := "72.194.77.242:5000" // Change this to your server's address and port
// Create a UDP address structure to resolve the server address
serverUdpAddr, err := net.ResolveUDPAddr("udp", serverAddr)
if err != nil {
fmt.Println("Error resolving address:", err)
panic(err)
}
localAddr, err := net.ResolveUDPAddr("udp", "0.0.0.0:5001")
if err != nil {
fmt.Println("Error resolving address:", err)
panic(err)
}
// Create a UDP connection
conn, err := net.ListenUDP("udp", localAddr)
if err != nil {
fmt.Println("Error creating UDP connection:", err)
panic(err)
}
defer conn.Close()
go func() {
fmt.Println("CLIENT | listening on", conn.LocalAddr())
for {
// read
buf := make([]byte, 512)
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
panic(err)
}
fmt.Println("CLIENT | received message from ", addr.IP, ":", addr.Port, " with n: ", n)
}
}()
// Message to send
message := []byte("Hello server, I am the client!")
go func() {
for {
// write
_, err = conn.WriteToUDP(message, serverUdpAddr)
if err != nil {
panic(err)
}
// sleep for 5 seconds
time.Sleep(5 * time.Second)
}
}()
// wait
select {}
}
+3
View File
@@ -0,0 +1,3 @@
module github.com/talksik/udp-ping-pong
go 1.21.1
+33
View File
@@ -0,0 +1,33 @@
package main
import (
"fmt"
"net"
)
func main() {
// udp listen
conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 5000})
if err != nil {
panic(err)
}
for {
// read
buf := make([]byte, 512)
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
panic(err)
}
fmt.Println("SERVER | received message from ", addr)
// write
_, err = conn.WriteToUDP(buf[:n], addr)
if err != nil {
panic(err)
}
}
}