服务端
package main
import (
"fmt"
"net"
)
func process(conn net.Conn) {
defer conn.Close()
for {
buf := make([]byte, 1024)
fmt.Printf("服务器在等待客户端%s发送信息\n", conn.RemoteAddr().String())
n, err := conn.Read(buf)
if err != nil {
fmt.Println("客户端退出 err=", err)
return
}
fmt.Println("客户端发送的数据:", string(buf[:n]))
}
}
func main() {
fmt.Println("服务器开始监听端口")
listen, err := net.Listen("tcp", "0.0.0.0:8888")
fmt.Println(listen)
if err != nil {
fmt.Println("listen err=", err)
return
}
defer listen.Close()
for {
fmt.Println("等待客户端连接")
conn, err := listen.Accept()
if err != nil {
fmt.Println("Accept err=", err)
} else {
fmt.Printf("suc conn=%v,客户端ip=%v\n ", conn, conn.RemoteAddr().String())
}
go process(conn)
}
}
客户端
package main
import (
"bufio"
"fmt"
"net"
"os"
"strings"
)
func main() {
conn, err := net.Dial("tcp", "192.168.0.110:8888")
if err != nil {
fmt.Println("client err=", err)
return
}
defer conn.Close()
reader := bufio.NewReader(os.Stdin)
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("readstring err=", err)
}
inputInfo := strings.Trim(input, "\r\n")
if strings.ToUpper(inputInfo) == "Q" {
return
}
_, err = conn.Write([]byte(inputInfo))
if err != nil {
fmt.Println("conn.write err=", err)
}
}
}