198. go tcp编程
2021/10/3 11:10:15
本文主要是介绍198. go tcp编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
客户端代码
package main import ( "bufio" "fmt" "net" "os" "strings" ) func main() { // 连接服务端 conn, err := net.Dial("tcp", "127.0.0.1:8888") if err != nil { fmt.Println("client dial err=", err) return } // 构建reader, 从控制台读入数据 reader := bufio.NewReader(os.Stdin) for { // 按行读取数据 line, err := reader.ReadString('\n') if err != nil { fmt.Println("readingString err", err) } // 去除换行 line = strings.Trim(line, " \r\n") if line == "exit" { fmt.Println("将客户端退出") break } // 传送数据 _, err = conn.Write([]byte(line + "\n")) if err != nil { fmt.Println("conn.Write err=", err) } // fmt.Printf("客户端发送了%d字节数据, 退出", n) } }
服务端代码
package main import ( "fmt" "net" ) 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) if err != nil { fmt.Printf("客户端退出err=%v", err) return } fmt.Println(string(buf[:n])) } } func main() { fmt.Println("服务器开始监听") listen, err := net.Listen("tcp", "0.0.0.0:8888") if err != nil { fmt.Println("list err=", err) return } defer listen.Close() for { fmt.Println("等到客户端连接...") conn, err := listen.Accept() if err != nil { fmt.Printf("Accept() err =%v", err) } else { fmt.Printf("Accept() suc con=%v 客户端ip=%v\n", conn, conn.RemoteAddr().String()) } go process(conn) } }
这篇关于198. go tcp编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29goland 编辑器超过线的插件有哪些?-icode9专业技术文章分享
- 2024-11-26go.mod的文件内容是什么?-icode9专业技术文章分享
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用