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-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南
- 2024-10-17Golang学习:初学者入门教程
- 2024-10-17Golang学习:新手入门教程