/
tcpClient.go
executable file
·55 lines (43 loc) · 1016 Bytes
/
tcpClient.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
package main
import (
"net"
"logd/lib"
"time"
"fmt"
)
type TcpClient struct {
logChan chan map[string]string
}
//工厂初始化函数
func TcpClientInit(c chan map[string]string) (tc TcpClient) {
// var tc TcpClient
tc.logChan = c
return tc
}
func (tc TcpClient) StartLogAgentServer() {
service := ":1202"
tcpAddr, err := net.ResolveTCPAddr("tcp4", service)
lib.CheckError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
lib.CheckError(err)
for {
conn, err := listener.Accept()
lib.CheckError(err)
go tc.handleConnnection(conn,tc.logChan)
}
}
func (tc TcpClient) handleConnnection(conn net.Conn,c chan map[string]string) {
defer conn.Close()
conn.SetReadDeadline(time.Now().Add(2 * time.Minute))
request := make([]byte, 128)
//get consumer id
requestLen, _ := conn.Read(request)
if requestLen == 0 {
return
}
msg := string(request)
fmt.Println(msg)
m := map[string]string{"hour":time.Now().Format("2006010215"), "line":msg}
c <- m
conn.Write([]byte("ok"))
}