-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.go
87 lines (62 loc) · 1.39 KB
/
client.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"fmt"
"net"
"os"
"runtime"
"time"
"github.com/BeneyKim/learn-golang/morestrings"
)
const (
SERVER_ADDRESS = "cloudsim.ntel.ml"
//SERVER_ADDRESS = "127.0.0.1"
)
func main() {
quit := make(chan int)
go makeConsumer(quit)
go makeProvider()
<-quit
}
func makeProvider() {
providerAddr := fmt.Sprintf("%s:%d", SERVER_ADDRESS, 23001)
conn, err := net.Dial("tcp", providerAddr)
checkError(err)
data := make([]byte, 512)
for {
n, err := conn.Read(data)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Server send : " + string(data[:n]))
time.Sleep(time.Duration(3) * time.Second)
fmt.Println("Returing back : " + morestrings.ReverseRunes(string(data[:n])))
conn.Write([]byte(morestrings.ReverseRunes(string(data[0:n]))))
}
}
func makeConsumer(quit chan int) {
consumerAddr := fmt.Sprintf("%s:%d", SERVER_ADDRESS, 23002)
conn, err := net.Dial("tcp", consumerAddr)
checkError(err)
data := make([]byte, 512)
for {
var s string
fmt.Scanln(&s)
conn.Write([]byte(s))
time.Sleep(time.Duration(3) * time.Second)
n, err := conn.Read(data)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Returned : " + string(data[:n]))
}
quit <- 0
}
func checkError(err error) {
_, file, line, _ := runtime.Caller(1)
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error (%s:%d): %s", file, line, err.Error())
os.Exit(1)
}
}