net
包提供了网络I/O的基础设施,包括TCP/UDP协议,以及DNS解析。goCopy codeln, err := net.Listen("tcp", ":8080")
if err != nil {
// 处理错误
}
goCopy codefor {
conn, err := ln.Accept()
if err != nil {
// 处理错误
continue
}
go handleConnection(conn)
}
goCopy codefunc handleConnection(conn net.Conn) {
// 使用conn读取和写入数据
conn.Close()
}
goCopy codeconn, err := net.Dial("tcp", "localhost:8080")
if err != nil {
// 处理错误
}
goCopy code// 发送数据
conn.Write([]byte("hello\n"))
// 接收数据
bufio.NewReader(conn).ReadString('\n')
goCopy code
conn.Close()
建立UDP连接
goCopy code
conn, err := net.Dial("udp", "localhost:8081")
发送和接收数据
goCopy codeconn.Write([]byte("hello"))
buf := make([]byte, 1024)
n, _, err := conn.ReadFromUDP(buf)
package main
import (
"bufio"
"fmt"
"net"
)
func main() {
listener, err := net.Listen("tcp", "localhost:8888")
if err != nil {
fmt.Println("开启服务端错误:", err)
return
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("接收错误:", err)
continue // 改为continue,可以处理下一个连接
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
// 读取客户端数据
message, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
fmt.Println("读取错误:", err)
return
}
fmt.Println("Message Received:", message)
// 回发数据
response := "收到你的消息了:" + message
conn.Write([]byte(response))
}
package main
import (
"bufio"
"fmt"
"net"
)
func main() {
conn, err := net.Dial("tcp", "localhost:8888")
if err != nil {
fmt.Println("连接错误:", err)
return
}
defer conn.Close()
// 发送数据
message := "玩游戏\n"
_, err = conn.Write([]byte(message))
if err != nil {
fmt.Println("发送数据错误:", err)
return
}
fmt.Println("发送数据:", message)
// 读取响应
response, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
fmt.Println("读取响应错误:", err)
return
}
fmt.Println("收到响应:", response)
}