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.Get或http.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语言的并发模型和高性能特性使得网络编程更加高效和可靠。