运行环境,amd64 ubuntu18.04
我在win10上 给 ubuntu下的go udp server 的8008 端口 不停的发rtp数据包
但是go程序一直读不到数据 ,阻塞在read那里,我确认 ubuntu和windows是通的,tcpdump也能抓到 8008端口的包,
![image.png](https://static.studygolang.com/190417/272a6fa2a93bb70ffcaf5b15b4a74de8.png)
1、其次我用c++在ubuntu上写的client 给 8008发数据 go程序是能收到的,
2、我用c++写的udp server 也能 收到window发来的rtp包,
但是就是go程序收不到 任何win 发来的 rtp包 阻塞在read那里。
本人go新人,想问问是什么原因,或者往什么方向查原因。
下面贴代码。
```go
package main
import (
"net"
log "github.com/astaxie/beego/logs"
)
func handleConnection(conn *net.UDPConn) {
log.Debug("on message")
buffer := make([]byte, 1024)
n, remoteAddr, err := conn.ReadFromUDP(buffer)
if err != nil {
log.Error("failed to read UDP msg because of ", err.Error())
return
}
log.Debug("recv ", n, " message from ", /*remoteAddr.String(),*/ ": ", buffer)
}
func main(){
log.Info("==========system init==========")
localAddress := net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8008};
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8008")
if err != nil{
log.Critical("net ResolveUDPAddr Error.")
}
log.Debug("local addresses : ", addr.IP, ":", addr.Port)
log.Debug("net start.")
conn, err := net.ListenUDP("udp", &localAddress)
if err != nil {
log.Critical("net ListenUDP.")
}
log.Debug("net end.")
defer conn.Close()
for {
handleConnection(conn)
}
}
```
![image.png](https://static.studygolang.com/190417/22615d21d673db1167693e7fea3374b2.png)
C 客户端能收到
![image.png](https://static.studygolang.com/190417/070d4cfdc1672e8096fd3eb5c81c1c35.png)
#5
更多评论
应该不是,我写的c的 udp server 能收到, c和go 程序一样都在那个ubuntu 上运行,防火墙应该和我什么语言写的没关系吧 。
我猜可能是go里面的库做了什么过滤或是其他原因,但是不知道往哪查。
#2