Go: net
2023-09-11 14:16:16 时间
Server:
package main import ( "fmt" "net" ) func main() { fmt.Println("net.Listen") listen, err := net.Listen("tcp", "0.0.0.0:5555") if err != nil { fmt.Println(err) return } defer func(listen net.Listener) { err := listen.Close() if err != nil { fmt.Println("main close err >>>", err) } }(listen) for { fmt.Println("listen.Accept") conn, err := listen.Accept() if err != nil { fmt.Println("Accept error:", err) } else { fmt.Printf("conn %T %v client: %v\n", conn, conn, conn.RemoteAddr().String()) } go process(conn) } } func process(conn net.Conn) { defer func(conn net.Conn) { err := conn.Close() if err != nil { fmt.Println("process close err >>>", err) } }(conn) buffer := make([]byte, 1024) for { length, err := conn.Read(buffer) if err != nil { fmt.Println("process read err >>>", err) return } fmt.Print(string(buffer[:length])) } }
client:
package main import ( "bufio" "fmt" "net" "os" "strings" ) func main() { conn, err := net.Dial("tcp", "localhost:5555") if err != nil { fmt.Println(err) return } reader := bufio.NewReader(os.Stdin) for { readString, err := reader.ReadString('\n') if err != nil { fmt.Println("readString err >>>", err) } readString = strings.Trim(readString, " \r\n") if readString == "exit" { fmt.Println("client exit") return } _, err = conn.Write([]byte(readString + "\n")) if err != nil { fmt.Println("write err >>>", err) } } }
相关文章
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04
- .NET Core开源Quartz.Net作业调度框架实战演练
- .NET开源Protobuf-net组件修炼手册
- [Go] 单元测试/性能测试 (go test)
- 【Go命令教程】13. go tool cgo
- 【Go命令教程】6. go doc 与 godoc
- 【Go命令教程】3. go install
- [Go] Http包 使用简介
- Go语言基础之结构体
- Go语言基础之变量和常量
- [Go] Pointer
- [GO] Install Go
- [GO] Install Go
- 【Go语言】【15】GO语言的面向对象
- [Go] Viper 加载项目配置,go build 打包配置文件进二进制
- Atitit go语言 golang 艾提拉总结特性优缺点 目录 1. Go 语言最主要的特性:1 2. 体积大概100M1 3. 问题1 3.1. 编译速度和异常控制怎么样1 3.2.
- 【Go】go实现 — 链表
- 【一天一门编程语言】用 Go 语言实现一个 DAG 任务调度系统的API 接口代码
- Go运行环境搭建(MacLinux)
- 【GO】 K8s 管理系统项目6[API部分--Namespace]
- Go语言自学系列 | go语言切片元素的添加和删除copy
- Go语言自学系列 | go语言数据类型
- 华为MateBook E Go电脑使用U盘怎么安装Win10系统?
- Go微服务全链路跟踪详解
- 设计模式的分类(Go语言)