# Golang Socket 编程 **Published by:** [Robin](https://paragraph.com/@robin-8/) **Published on:** 2023-05-04 **URL:** https://paragraph.com/@robin-8/golang-socket ## Content Server端package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer listener.Close() fmt.Println("Listening on 127.0.0.1:8080") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) return } defer conn.Close() go processWorker(conn) } } func processWorker(conn net.Conn) { for { buf := make([]byte, 1024) n, err := conn.Read(buf) if err != nil { fmt.Println("Error reading:", err.Error()) return } fmt.Printf("Received message:%s", string(buf[:n])) } } 服务端通过for循环listener.Accept去*处理不同的客户端链接;*processWorker通过for循环去处理每一个客户端的请求;Client端package main import ( "bufio" "fmt" "net" "os" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error connecting:", err.Error()) return } defer conn.Close() for { reader := bufio.NewReader(os.Stdin) fmt.Print("请输入您想输入的内容:") message, _ := reader.ReadString('\n') _, err = conn.Write([]byte(message)) // 发送数据 if err != nil { fmt.Println("Error Sending data:", err.Error()) } } } 客户端通过bufio.NewReader(os.Stdin)获取标准输入,并将标准输入内容写入到远端server ## Publication Information - [Robin](https://paragraph.com/@robin-8/): Publication homepage - [All Posts](https://paragraph.com/@robin-8/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@robin-8): Subscribe to updates