server
package main
import (
"fmt"
"net"
)
//单独处理连接的函数
func process(conn net.Conn) {
var buf = make([]byte, 1024)
n, err := conn.Read(buf) // 返回读取到的字节数和错误信息
if err != nil {
fmt.Println("接受失败")
return
}
fmt.Println("接收客户端发来的消息", string(buf[:n])) //这里有可能接受到的消息不足1024,所以要取索引
}
func main() {
listener, err := net.Listen("tcp", "127.0.0.1:20000")
if err != nil {
fmt.Println("listen:20000 失败,err:", err)
return
}
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("连接失败,err: ", err)
continue
}
go process(conn)
}
}
client
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:20000")
if err != nil {
fmt.Println("连接服务端失败, err", err)
return
}
defer conn.Close()
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
return
}
_, err = conn.Write([]byte(input))
if err != nil {
fmt.Println("发送消息失败 err", err)
}
}