所以我试图将udp数据包发送到计算机上的侦听端口,该计算机没有连接到同一个局域网,但是在erlang中通过gen_udp可以访问Internet。
我打开端口启动第一个节点
({ok, Socket} = gen_udp:open(8887).
)并以相同的方式打开另一个节点上的端口,当我通过gen_udp:send
从一个节点向另一个节点发送数据包时,我没有收到任何信息(尝试使用flush())接收节点),所以我想知道是否有什么我做错了? ,我检查了防火墙,允许使用erlang和epmd。
答案 0 :(得分:0)
您是否尝试通过以下方式将Socket的控制进程设置为当前进程:
gen_udp:controlling_process(Socket,Pid)
?
然后您应该设置接收循环并将消息发送给您。消息的格式应为:{udp, Socket, IP, InPortNo, Packet}
您也可以尝试在打开后使用inet:setopts(Socket, [{active, false}])
将套接字设置为被动模式。之后你可以使用'gen_udp:recv / 3`来读取套接字。