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