mirror of
https://gitee.com/johng/gf.git
synced 2024-12-04 21:28:22 +08:00
77 lines
1.2 KiB
Go
77 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
addr := "127.0.0.1:8999"
|
|
|
|
// Server
|
|
go func() {
|
|
tcpaddr, err := net.ResolveTCPAddr("tcp4", addr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
listen, err := net.ListenTCP("tcp", tcpaddr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
for {
|
|
if conn, err := listen.Accept(); err != nil {
|
|
panic(err)
|
|
} else if conn != nil {
|
|
go func(conn net.Conn) {
|
|
for {
|
|
buffer := make([]byte, 1024)
|
|
n, err := conn.Read(buffer)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
break
|
|
} else {
|
|
fmt.Println(">", string(buffer[0:n]))
|
|
conn.Close()
|
|
}
|
|
}
|
|
|
|
}(conn)
|
|
}
|
|
}
|
|
}()
|
|
|
|
time.Sleep(time.Second)
|
|
|
|
// Client
|
|
if conn, err := net.Dial("tcp", addr); err == nil {
|
|
// first write
|
|
_, err := conn.Write([]byte("hello1"))
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
conn.Close()
|
|
return
|
|
} else {
|
|
fmt.Println("ok")
|
|
}
|
|
|
|
// sleep 10 seconds and re-send
|
|
time.Sleep(10 * time.Second)
|
|
|
|
// second write
|
|
_, err = conn.Write([]byte("hello2"))
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
conn.Close()
|
|
return
|
|
} else {
|
|
fmt.Println("ok")
|
|
}
|
|
// sleep 10 seconds and re-send
|
|
time.Sleep(10 * time.Second)
|
|
} else {
|
|
panic(err)
|
|
}
|
|
|
|
}
|