/
ov3_udp_client_go.go
65 lines (54 loc) · 1.3 KB
/
ov3_udp_client_go.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Go 1.2
// go run helloworld_go.go
package main
import (
"net"
"time"
"log"
// "fmt"
)
func ListenThing(conn *net.UDPConn, read_channel chan []byte) {
for {
data := make([]byte, 1024)
log.Println("Attempt read")
_, _, err := conn.ReadFromUDP(data)
if err != nil {
log.Fatal(err)
}
read_channel <- data
}
}
func WriteThing(conn *net.UDPConn) {
for {
data := []byte("Testing 123")
sent_bytes, err := conn.Write(data)
if err != nil {
log.Fatal(err)
}
log.Println("Sent", sent_bytes, "bytes")
time.Sleep(1 * time.Second)
}
}
func main() {
// Listen for data through this address:port
local, err := net.ResolveUDPAddr("udp4", ":20010")
conn2, err := net.ListenUDP("udp4", local)
if err != nil {
log.Fatal(err)
}
// Send data to this address:port (broadcast address)
remote, err := net.ResolveUDPAddr("udp4","129.241.187.23:20010")
if err != nil {
log.Fatal(err)
}
conn, err := net.DialUDP("udp4", nil, remote)
if err != nil {
log.Fatal(err)
}
read_channel := make(chan []byte)
go ListenThing(conn2, read_channel)
go WriteThing(conn)
for {
log.Println(<- read_channel)
}
}