请各位看官提提意见 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)
}
}
有疑问加站长微信联系(非本文作者)

@Hubery 这样的做法貌似是不对的,我换了另一种方式,把Handle函数里面的内容拆开了,我测试了一下,这样是比较合理的, 如
}
合并法没关系,几个小细节:
为什么你喜欢写buf[0:] 而不是buf[
ReadFromUDP 返回的 err 被你吞掉了,还不如给 log.Fatal 更好
checkError 里面也建议用 log.Fatal
多谢David指点,我也是近期采用Go做项目,边学边做,很多不明地方请多指正啊。 顺带请教一下Go下面灵活输出Log的方法,如设定格式,以及输出到不同Log文件