tcp_client.go
package main
import (
"fmt"
"net"
)
func main() {
conn, err := net.Dial("tcp", "172.21.110.91:3600")
if err != nil {
fmt.Println(err)
}
go func() {
buff := make([]byte, 2048)
for {
n, _ := conn.Read(buff)
fmt.Printf("recv:%s\n", string(buff[0:n]))
}
}()
for {
msg := ""
fmt.Scanf("%s\n", &msg)
if msg == "STOP" {
break
}
conn.Write([]byte(msg))
}
}
tcp_server.go
package main
import (
"fmt"
"net"
"strings"
"time"
)
const TCP = "tcp"
func main() {
addr, err := net.ResolveTCPAddr(TCP, ":3600")
if err != nil {
fmt.Println(err)
}
l, err := net.ListenTCP(TCP, addr)
if err != nil {
fmt.Println(err)
}
for {
conn, err := l.AcceptTCP()
if err == nil {
go NewAgent(conn)
}
}
}
func NewAgent(conn *net.TCPConn) {
go func() {
buff := make([]byte, 2048)
for {
n, err := conn.Read(buff)
if err == nil {
fmt.Printf("[recv]%s]:%s.\n", conn.RemoteAddr().String(), string(buff[0:n]))
if strings.TrimSpace(string(buff[0:n])) == "STOP" {
fmt.Println("Close connection.")
break
}
}
}
}()
go func() {
for {
conn.Write([]byte("OK"))
time.Sleep(10 * time.Second)
}
}()
}