请各位看官提提意见 UDP Server的例子
package main
import (
"fmt"
"net"
"os"
"time"
)
func handleClient(conn *net.UDPConn) {
var buf [512]byte
n, addr, err := conn.ReadFromUDP(buf[0:])
if err != nil {
return
}
fmt.Println(string(buf[0:]))
daytime := time.Now().String()
fmt.Println(n, addr)
conn.WriteToUDP([]byte(daytime), addr)
}
func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error:%s", err.Error())
os.Exit(1)
}
}
func main() {
service := ":1200"
udpAddr, err := net.ResolveUDPAddr("up4", service)
checkError(err)
conn, err := net.ListenUDP("udp", udpAddr)
checkError(err)
for {
handleClient(conn)
}
}
合并法没关系,几个小细节:
1. 为什么你喜欢写buf[0:] 而不是buf[:]
1. ReadFromUDP 返回的 err 被你吞掉了,还不如给 log.Fatal 更好
1. checkError 里面也建议用 log.Fatal
#4
更多评论
for{
conn,err := net.ListenUDP("udp",udpAddr)
if err==nil{
go handleClient(conn)
}
}
#2