tcp服务器
开启对服务器ip以及端口的监听
lis, err := net.Listen("tcp", ":6666")
if err != nil {
log.Fatalf("failed to listen:%v", err)
}
用for循环从监听者处取发起拨号的连接
for {
conn, err := lis.Accept()
if err != nil {
log.Fatalf("failed to accept:%v", err)
continue
}
sendMessage(conn)
time.Sleep(time.Second * 1)
}
写两个函数用来收发消息
发消息:将需要发送的消息内容,通过相关的序列化操作,转化成字节流,将字节流通过write函数发送
func send(){
_,err := conn.Write([]byte(str))
if err != nil {
log.Fatalf("failed to write:%v", err)
}
}
收消息:通过read函数将字节流读出来,然后通过相关的反序列化操作,得到想要的消息
func recv(){
b := make([]byte,1024)
_,err := conn.Read(b)
if err != nil {
log.Fatalf("failed to read:%v", err)
}
}
tcp客户端
向相关服务器进行拨号操作
conn, err := net.Dial("tcp", "127.0.0.1:8080")
if err != nil {
log.Fatalf("failed to dial,err:%v",err)
}
拨号成功后就可以进行相应的收发操作了,函数同服务器一样
单独开启一个携程goroutine,用来循环接受消息go Recv()
此时Recv()函数需要增加一个for用来循环接受
func Recv(){
for{
b := make([]byte,1024)
_,err := conn.Read(b)
if err != nil {
log.Fatalf("failed to read:%v", err)
}
dosomething(...)
}
}
一个简单的tcp
demo就完成了