Go语言网络编程| 青训营笔记

70 阅读1分钟

Go语言提供了强大的网络编程能力,可以轻松构建高效、并发的网络应用。

TCP服务端和客户端

  • 使用net包实现TCP服务器和客户端。
  • 服务器使用net.Listen监听指定端口,接受客户端连接。
  • 客户端使用net.Dial连接服务器。
    示例代码:
// TCP服务器端
listener, _ := net.Listen("tcp", "localhost:8080")
defer listener.Close()
conn, _ := listener.Accept()
// 处理连接

// TCP客户端
conn, _ := net.Dial("tcp", "localhost:8080")
// 发送和接收数据

HTTP服务端和客户端:

  • 使用net/http包实现HTTP服务器和客户端。
  • 服务器使用http.HandleFunc注册处理器函数,监听HTTP请求。
  • 客户端使用http.Gethttp.Post发送HTTP请求并获取响应。
    示例代码:
// HTTP服务器端
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  fmt.Fprint(w, "Hello, World!")
})
http.ListenAndServe(":8080", nil)

// HTTP客户端
resp, _ := http.Get("http://localhost:8080")
body, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
fmt.Println(string(body))

WebSocket通信:

  • 使用gorilla/websocket包实现WebSocket通信。
  • 服务器使用websocket.Upgrader升级HTTP连接为WebSocket连接,处理消息。
  • 客户端使用websocket.Dial与服务器建立WebSocket连接,并发送和接收消息。
    示例代码:
// WebSocket服务器端
upgrader := websocket.Upgrader{}
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
    conn, _ := upgrader.Upgrade(w, r, nil)
    for {
        messageType, message, _ := conn.ReadMessage()
        // 处理消息
    }
})
http.ListenAndServe(":8080", nil)

// WebSocket客户端
conn, _ := websocket.Dial("ws://localhost:8080/ws", "", "http://localhost")
// 发送和接收消息

通过以上示例代码和具体案例,我们可以了解到Go语言网络编程的基本原理和使用方法。可以根据需求扩展这些例子,构建更复杂的网络应用,如聊天室、实时数据传输等。同时,Go语言的并发模型和高性能特性使得网络编程更加高效和可靠。