小编Eos*_*sis的帖子

Linux UDP Socket sendto:操作不允许

我正在尝试使用OpenSIPS(SIP代理)应用程序来诊断问题.

当将两个不同的UDP数据包发送到同一个IP和端口时,一个呼叫失败-1 EPERM (Operation not permitted)而另一个呼叫失败 .

两个调用都是从同一个进程(至少是相同的PID)进行的.

有问题的代码在github上.

这是strace输出:

strace -e sendto
sendto(7, "SIP/2.0 100 Giving a try\r\nVia: S"..., 315, 0, {sa_family=AF_INET, sin_port=htons(5060), sin_addr=inet_addr("yyy.yyy.yyy.yyy")}, 16) = 315
sendto(7, "INVITE sip:myHomeDesktop@xxx"..., 1253, 0, {sa_family=AF_INET, sin_port=htons(5060), sin_addr=inet_addr("xxx.xxx.xxx.xxx")}, 16) = 1253
sendto(7, "SIP/2.0 200 OK\r\nVia: SIP/2.0/UDP"..., 707, 0, {sa_family=AF_INET, sin_port=htons(5060), sin_addr=inet_addr("yyy.yyy.yyy.yyy")}, 16) = -1 EPERM (Operation not permitted)
Run Code Online (Sandbox Code Playgroud)

c sockets linux udp sip

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

linux ×1

sip ×1

sockets ×1

udp ×1