发布时间:2024-11-21 22:07:32
随着互联网的发展,网络编程变得越来越重要。在不同的编程语言中,golang以其高效、简洁和并发性而备受开发者的青睐。本文将介绍一些golang网络编程的案例,以帮助初学者更好地理解和运用该语言。
首先,让我们看一个简单的TCP服务器的案例。以下代码可以创建一个简单的TCP服务器,监听在本地的8080端口上,并接收客户端的连接请求:
package main
import (
"fmt"
"net"
)
func main() {
listener, err := net.Listen("tcp", ":8080")
if err != nil {
fmt.Println("Error:", err)
return
}
defer listener.Close()
fmt.Println("Listening on :8080")
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error:", err)
continue
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
buffer := make([]byte, 1024)
bytesRead, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error:", err)
conn.Close()
return
}
message := string(buffer[:bytesRead])
fmt.Println("Received:", message)
conn.Write([]byte("Message received."))
conn.Close()
}
在golang中,使用"net/http"包可以轻松创建一个HTTP服务器。以下代码演示了如何创建一个简单的HTTP服务器,监听在本地的8080端口上,并处理GET请求:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
fmt.Println("Listening on :8080")
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World!")
}
除了TCP和HTTP,golang还支持UDP协议。以下代码展示了如何创建一个简单的UDP服务器和客户端,实现基本的消息传递:
package main
import (
"fmt"
"net"
"os"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage:", os.Args[0], "host:port")
os.Exit(1)
}
serverAddr, err := net.ResolveUDPAddr("udp", os.Args[1])
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
conn, err := net.DialUDP("udp", nil, serverAddr)
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
defer conn.Close()
message := []byte("Hello, server!")
_, err = conn.Write(message)
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
buffer := make([]byte, 1024)
bytesRead, err := conn.Read(buffer)
if err != nil {
fmt.Println("Error:", err)
os.Exit(1)
}
fmt.Println("Server response:", string(buffer[:bytesRead]))
}
以上是三个简单的golang网络编程案例,展示了不同协议(TCP、HTTP和UDP)的基本用法。通过学习这些案例,初学者可以更好地理解和运用golang的网络编程能力。