96 lines
1.6 KiB
Go
96 lines
1.6 KiB
Go
|
|
package bytesSendUtil
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"fmt"
|
|||
|
|
"net"
|
|||
|
|
"testing"
|
|||
|
|
"time"
|
|||
|
|
|
|||
|
|
"goutil/debugUtil"
|
|||
|
|
"goutil/zlibUtil"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// 保存接收的数据用于校验
|
|||
|
|
var tcp_recv_msg = make([]byte, 0)
|
|||
|
|
|
|||
|
|
func init() {
|
|||
|
|
debugUtil.SetDebug(true)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 创建socket服务器,保存收到的数据
|
|||
|
|
func server(addr string) net.Listener {
|
|||
|
|
listener, err := net.Listen("tcp", addr)
|
|||
|
|
if err != nil {
|
|||
|
|
panic(err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
go func() {
|
|||
|
|
for {
|
|||
|
|
conn, err := listener.Accept()
|
|||
|
|
if err != nil {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for {
|
|||
|
|
buff := make([]byte, 512)
|
|||
|
|
_, err := conn.Read(buff)
|
|||
|
|
if err != nil {
|
|||
|
|
break
|
|||
|
|
} else {
|
|||
|
|
decompressed, err := zlibUtil.Decompress(buff[4:])
|
|||
|
|
if err != nil {
|
|||
|
|
panic(err)
|
|||
|
|
} else {
|
|||
|
|
tcp_recv_msg = append(tcp_recv_msg, decompressed...)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}()
|
|||
|
|
|
|||
|
|
return listener
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func Test_tcp(t *testing.T) {
|
|||
|
|
// 开启服务器
|
|||
|
|
l := server("127.0.0.1:9559")
|
|||
|
|
|
|||
|
|
tcp, err := NewTCPSender("./test_tcp", "127.0.0.1:9559")
|
|||
|
|
if err != nil {
|
|||
|
|
t.Error(err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 发送消息
|
|||
|
|
tcp.Write([]byte("tcp-msg-1"))
|
|||
|
|
time.Sleep(time.Millisecond * 50) // 等待协程发送数据
|
|||
|
|
|
|||
|
|
// 关闭连接和服务器
|
|||
|
|
l.Close()
|
|||
|
|
(tcp.(*tcpSender)).conn.Close()
|
|||
|
|
|
|||
|
|
// 发送消息,此数据会失败
|
|||
|
|
tcp.Write([]byte("tcp-msg-2"))
|
|||
|
|
// time.Sleep(time.Millisecond * 50)
|
|||
|
|
|
|||
|
|
// 保存数据
|
|||
|
|
tcp.Close()
|
|||
|
|
|
|||
|
|
// 重启,检查是否重发tcp-msg-2
|
|||
|
|
l = server("127.0.0.1:9559")
|
|||
|
|
tcp, err = NewTCPSender("./test_tcp", "127.0.0.1:9559")
|
|||
|
|
if err != nil {
|
|||
|
|
t.Error(err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
time.Sleep(time.Second * 2)
|
|||
|
|
|
|||
|
|
if string(tcp_recv_msg) != "tcp-msg-1tcp-msg-2" {
|
|||
|
|
t.Error("message error. got " + string(tcp_recv_msg))
|
|||
|
|
} else {
|
|||
|
|
fmt.Println("TCP OK")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tcp.Close()
|
|||
|
|
l.Close()
|
|||
|
|
}
|