您的位置 首页 golang

Golang实现TCP服务器/客户端

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

关于作者: 智云科技

热门文章

网站地图