socket golang
时间: 2023-10-10 15:09:01 浏览: 109
Go语言中的socket编程可以使用`net`包来实现。以下是一个简单的示例代码:
```go
package main
import (
"fmt"
"net"
)
func main() {
// 创建TCP监听
listener, err := net.Listen("tcp", "127.0.0.1:8080")
if err != nil {
fmt.Println("Failed to listen:", err)
return
}
defer listener.Close()
fmt.Println("Server started, listening on 127.0.0.1:8080")
for {
// 等待客户端连接
conn, err := listener.Accept()
if err != nil {
fmt.Println("Failed to accept:", err)
break
}
// 启动一个新的goroutine处理客户端连接
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
// 读取客户端发送的数据
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Failed to read:", err)
return
}
// 处理数据
data := buffer[:n]
fmt.Println("Received:", string(data))
// 发送响应给客户端
response := []byte("Hello, client!")
_, err = conn.Write(response)
if err != nil {
fmt.Println("Failed to write:", err)
return
}
}
```
这个示例中,我们创建了一个TCP服务器监听本地的8080端口。当有客户端连接时,会启动一个新的goroutine来处理该连接。在`handleConnection`函数中,我们首先从客户端读取数据,然后发送响应给客户端。
你可以根据自己的需要修改该示例代码,例如添加更复杂的数据处理逻辑或使用其他协议(如UDP)。希望对你有帮助!如果你还有其他问题,请继续提问。
阅读全文