网络
net
包提供了进行网络相关操作的基础设施,包括处理网络协议、地址处理、连接等功能。
简单的 HTTP 客户端
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
// 发起 HTTP GET 请求
response, err := http.Get("https://jsonplaceholder.typicode.com/posts/1")
if err != nil {
fmt.Println("Error:", err)
return
}
defer response.Body.Close()
// 读取响应体
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
fmt.Println(string(body))
}
简单的 HTTP 服务器
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
// 在此处理传入的 HTTP 请求
fmt.Fprintf(w, "Hello, this is a simple HTTP server!")
}
func main() {
// 为根端点 "/" 注册处理函数
http.HandleFunc("/", handler)
// 在端口 8080 上启动 HTTP 服务器
fmt.Println("Server listening on port 8080...")
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Error:", err)
}
}
简单的 TCP 服务器
package main
import (
"fmt"
"net"
)
func handleConnection(conn net.Conn) {
// 处理传入的连接
defer conn.Close()
// 从连接中读取数据
buffer := make([]byte, 1024)
n, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error reading:", err)
return
}
fmt.Printf("Received: %s", buffer[:n])
// 回应客户端
conn.Write([]byte("Hello from the server!"))
}
func main() {
// 在端口 8080 上监听传入的连接
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error listening:", err)
return
}
defer listener.Close()
fmt.Println("Server listening on port 8080...")
// 接受传入的连接
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting connection:", err)
continue
}
// 在一个单独的 goroutine 中处理连接
go handleConnection(conn)
}
}
Loading...
> 此处输出代码运行结果