美文网首页
用go进行简单的tcp连接

用go进行简单的tcp连接

作者: 卖毛玉的小贩 | 来源:发表于2019-07-19 10:03 被阅读0次

说完tcp和udp的区别,就要开始讲讲如何用go进行连接了。
话不多说,上代码。

package main

import (
    "net"
    "fmt"
    "io"
)

func main() {
       // 创建 监听器  参1 为 tcp或udp 必须小写  参2则是地址+端口号   
    list,err := net.Listen("tcp","127.0.0.1:8888")
    if err != nil {
        fmt.Println("Listen err:",err)
    }
    defer list.Close()  // 创建后记住关闭
    for {
              //与客户端建立socket连接  
              // 死循环是为了于多个用户进行连接通信
        conn,err := list.Accept()
        if err != nil {
            fmt.Println("Accept err:", err)
            continue
        }
        go con(conn) //连接后进入子go程  负责与用户进行交互  不阻塞其他用户
    }

}
func con(conn net.Conn){
    defer conn.Close()
    for{
        bytes := make([]byte,4096)
        n,err := conn.Read(bytes) //读数据
        if n == 0 {
            fmt.Println(conn.RemoteAddr().String())
            return
        }
        if err != nil && err != io.EOF {
            fmt.Println("read err:",err)
            return
        }
        str := Str(string(bytes[:n]))
        conn.Write([]byte(str)) //写数据
    }
}
func Str(str string) string { //字母大小写转换  
    fmt.Println(str)

    str1 := []rune(str)
    for i := 0; i < len(str1); i++ {

        if str1[i] >= 65 && str1[i] <= 91 {
            str1[i] += 32
        } else if str1[i] >= 97 && str1[i] <= 123 {
            str1[i] -= 32
        }
    }
    return string(str1)
}


相关文章

网友评论

      本文标题:用go进行简单的tcp连接

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