赞
踩
客户端和服务端的互动
分类
使用注意尽量少开端口
package main import( "fmt" "net" "bufio" "os" ) func main(){ conn,err:=net.Dial("tcp","192.168.209.1:8888") if err!=nil{ fmt.Println("client dail err:",err) return } fmt.Println("conn=",conn) reader:=bufio.NewReader(os.Stdin)//标准输出:键盘 line,err:=reader.ReadString('\n') if err!=nil{ fmt.Println("readString err=",err) } n,err:=conn.Write([]byte(line)) if err != nil { fmt.Println("conn.Write err=", err) } fmt.Printf("客户端发送了 %d 字节的数据,并退出", n) }
package main import( "fmt" "net" _"bufio" _"os" ) 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) //从 conn 读取 if err != nil { fmt.Printf("客户端退出 err=%v", err) return //!!! } fmt.Print(string(buf[:n])) } } func main(){ fmt.Println("服务器开始监听。。。") listen,err:=net.Listen("tcp","0.0.0.0:8889") if err!=nil{ fmt.Println("listen err=",err) return } fmt.Println("listen=",listen) defer listen.Close() for{ fmt.Println("等待客户端来连接。。。") conn,err:=listen.Accept() if err!=nil{ fmt.Println("Accept err=",err) }else{ fmt.Printf("Accept=%v ip=%v\n",conn,conn.RemoteAddr().String()) } go process(conn) } }
本文仅仅简单介绍了Golang的TCP编程,此篇是通过b站尚硅谷Golang视频的学习做的笔记。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。