Server 端
要点
1、net.Listen() 监听端口
2、listen.Accept() 间裂socket 连接
3、conn.Read() 循环读取数据
package mainimport ( "fmt" "net")func process(conn net.Conn){ defer conn.Close() for { var buf [128]byte n ,err := conn.Read(buf[:]) if err != nil { fmt.Println("Read from tcp server failed,err:",err) break } data := string(buf[:n]) fmt.Printf("Recived from client,data:%s\n",data) }}func main() { // 监听TCP 服务端口 listener,err := net.Listen("tcp","0.0.0.0:9090") if err != nil { fmt.Println("Listen tcp server failed,err:",err) return } for{ // 建立socket连接 conn,err := listener.Accept() if err != nil { fmt.Println("Listen.Accept failed,err:",err) continue } // 业务处理逻辑 go process(conn) }}
client端
要点
1、net.Dial() 建立连接
2、bufio.NewReader(os.Stdin) 从标准输出流获取内容
3、reader.ReadString() 循环读取数据,直到遇到换行符
4、遇到字符串“Q”终止连接
5、conn.Write() 给服务器响应信息
package mainimport ( "bufio" "fmt" "net" "os" "strings")func main() { // 连接服务器 conn,err := net.Dial("tcp","127.0.0.1:9090") if err != nil { fmt.Println("Connect to TCP server failed ,err:",err) return } // 读取命令行输入 inputReader := bufio.NewReader(os.Stdin) // 一直读取直到遇到换行符 for { input,err := inputReader.ReadString('\n') if err != nil { fmt.Println("Read from console failed,err:",err) return } // 读取到字符"Q"退出 str := strings.TrimSpace(input) if str == "Q"{ break } // 响应服务端信息 _,err = conn.Write([]byte(input)) if err != nil{ fmt.Println("Write failed,err:",err) break } } }
文章来源:智云一二三科技
文章标题:Golang实现TCP服务器/客户端
文章地址:https://www.zhihuclub.com/5927.shtml