tcp-server.go
// 收到什么发回去什么
package main
import (
"fmt"
"log"
"net"
)
func main() {
// 1.建立监听,绑定端口
tcp_server,err :=net.Listen("tcp",":8888")
if err != nil {
log.Panic("Failed to Listen",err)
}
// 4.收尾工作
defer tcp_server.Close()
// 2.等待新连接 并发
for {
conn,err :=tcp_server.Accept() //阻塞等待
if err != nil {
fmt.Println("Failed to Accept",err) // 这里不能终止服务,提示就可以
continue
}
// 3.用新连接通信
go cli_conn(conn)
}
}
// 处理消息的函数
func cli_conn(conn net.Conn) {
defer conn.Close()
fmt.Println("localaddr:",conn.LocalAddr())
fmt.Println("localaddr:",conn.RemoteAddr())
//循环收发消息
buf := make([]byte,256)
for {
// 获取消息
n,err := conn.Read(buf) // 数据存在buf中,n是读的数据大小
if err != nil {
fmt.Println("Failed to Read",err)
break
}
// 返回消息
fmt.Print("Send Response:",string(buf[:n]))
conn.Write(buf[:n])
}
}
客户端
# yum install nc
nc ip port