1
我正在玩我的第一个基本的udp服务器,我想知道如何支持并发连接?我认为我的代码一次只能得到一个连接来处理它,用tcp简单的服务器,事情似乎比这种情况更清楚,抛出一个goroutine来处理数据,但在这里我很失去了,提前感谢。如何支持使用UDP服务器并发连接go
func main() {
ListenerUDP("127.0.0.1", 1111)
}
func ListenerUDP(ip string, port int) {
buffer := make([]byte, 1024)
log.Println("Listener Started!")
addr := net.UDPAddr{
Port: port,
IP: net.ParseIP(ip),
}
conn, err := net.ListenUDP("udp", &addr)
if err != nil {
log.Fatalf("Error Listening:%s\n", err.Error())
panic(err)
}
defer conn.Close()
for {
_, remoteAddr, err := conn.ReadFromUDP(buffer[0:])
if err != nil {
log.Fatalf("Error:%s\n", err)
}
// Process data here? using a > go something()?
fmt.Printf("Data:%s From:%v\n", buffer, remoteAddr)
}
}
与您的代码,我从127.0.0.1:53236得到一个 - [ ],但如果我改变缓冲区:= make([] byte,0,1024) - > buffer:= make([] byte,1024)可以正常工作。 – Mmeyer 2015-02-09 01:06:14
谢谢,修正。 (我以前说过这个,但当我回来时,评论不在这里,所以......) – twotwotwo 2015-02-11 18:38:44