美文网首页Go语言学习路
Golang网络编程TCP连接

Golang网络编程TCP连接

作者: TZX_0710 | 来源:发表于2021-08-05 19:16 被阅读0次

    Golang网络编程

    TCP编程

    编写服务端

    package main
    
    import (
      "bufio"
      "fmt"
      "net"
    )
    
    //处理函数
    func process(conn net.Conn) {
      defer conn.Close() //关闭连接
      for {
          //获取输入流
          reader := bufio.NewReader(conn)
          //每次读取的大小
          var buf [1024]byte
          n, err := reader.Read(buf[:]) //读取数据 从头到尾读取
          if err != nil {
              fmt.Println("read from client failed,err", err)
              break
          }
          recvStr := string(buf[:n])
          fmt.Println("收到client端发来的数据:", recvStr)
          conn.Write([]byte(recvStr))
      }
    }
    func main() {
      listen, err := net.Listen("tcp", "127.0.0.1:21000")
      if err != nil {
          fmt.Println("listen failed,err", err)
          return
      }
      for {
          conn, err := listen.Accept()
          if err != nil {
              fmt.Println("accept failed,err", err)
              continue
          }
          go process(conn) //开启启程去处理读取数据
      }
    }
    
    

    编写客户端

    package main
    
    import (
       "bufio"
       "fmt"
       "net"
       "os"
       "strings"
    )
    
    func main() {
       conn, err := net.Dial("tcp", "127.0.0.1:21000")
       if err != nil {
          fmt.Println("err:", err)
          return
       }
       defer conn.Close()
       inputReader := bufio.NewReader(os.Stdin)
       for true {
          input, err := inputReader.ReadString('\n') //读取用户输入
          inputInfo := strings.Trim(input, "\r\n")
          if strings.ToUpper(inputInfo) == "Q" { //如果输入q表示退出
             return
          }
          _, err = conn.Write([]byte(inputInfo)) //发送数据
          if err != nil {
             return
          }
          buf := [512]byte{}
          read, err := conn.Read(buf[:])
          if err != nil {
             fmt.Println("recv failed,err:", err)
             return
          }
          fmt.Println(string(buf[:read]))
       }
    
    }
    

    采用 go build tcpclient.go编译成exe文件

    相关文章

      网友评论

        本文标题:Golang网络编程TCP连接

        本文链接:https://www.haomeiwen.com/subject/hycvvltx.html