-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathecho_client.go
More file actions
95 lines (78 loc) · 1.89 KB
/
echo_client.go
File metadata and controls
95 lines (78 loc) · 1.89 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package main
import "./enet"
import "flag"
import "fmt"
import "log"
import "net"
import "time"
var server_address = flag.String("client_address", "localhost:9998", "The address the server is listening on.")
//var client_address = flag.String("server_address","localhost:9997","The address the client will listen on.")
func main() {
err := enet.Initialize()
if err != nil {
log.Fatal(err)
}
defer enet.Deinitialize()
host, err := enet.CreateHost(nil, 1, 2, 0, 0)
if err != nil {
log.Fatalf("Failed to create host: '%s'", err)
}
defer host.Destroy()
server_addr, err := net.ResolveUDPAddr("udp", *server_address)
if err != nil {
log.Fatalf("Invalid udp address: '%s'", err)
}
server, err := host.Connect(server_addr, 2, 42)
if err != nil {
log.Fatal(err)
}
event, err := host.Service(5 * time.Second)
if err != nil {
log.Fatal(err)
}
if event == nil || event.Type != enet.CONNECT {
log.Fatal("Failed to connect to server", event)
}
for {
fmt.Print("send> ")
var input string = "junk"
fmt.Scan(&input)
if input == "quit" {
server.Disconnect(42)
for event, err = host.Service(3 * time.Second); event != nil; {
switch event.Type {
case enet.DISCONNECT:
fmt.Printf("disconnected")
return
default:
fmt.Println("discarding events during disconnect", event)
}
}
server.DisconnectNow(42)
return
}
payload := []byte(input)
server.Send(0, payload, enet.RELIABLE)
for event, err = host.Service(time.Second); true; {
if err != nil {
log.Fatal(err)
}
if event == nil {
break
}
switch event.Type {
case enet.CONNECT:
fmt.Printf("Connection made, %v\n", event.Data)
case enet.DISCONNECT:
fmt.Printf("Disconnection, %v\n", event.Data)
return
case enet.RECEIVE:
msg := string(event.Packet)
fmt.Printf("message: %v", msg)
default:
log.Fatal("unkown event", event)
}
break
}
}
}