在erlang中通过UDP发送数据包

时间:2011-05-07 12:11:37

标签: networking erlang erlang-ports

所以我试图将udp数据包发送到计算机上的侦听端口,该计算机没有连接到同一个局域网,但是在erlang中通过gen_udp可以访问Internet。

我打开端口启动第一个节点 ({ok, Socket} = gen_udp:open(8887).)并以相同的方式打开另一个节点上的端口,当我通过gen_udp:send从一个节点向另一个节点发送数据包时,我没有收到任何信息(尝试使用flush())接收节点),所以我想知道是否有什么我做错了? ,我检查了防火墙,允许使用erlang和epmd。

1 个答案:

答案 0 :(得分:0)

您是否尝试通过以下方式将Socket的控制进程设置为当前进程: gen_udp:controlling_process(Socket,Pid)

然后您应该设置接收循环并将消息发送给您。消息的格式应为:{udp, Socket, IP, InPortNo, Packet}

您也可以尝试在打开后使用inet:setopts(Socket, [{active, false}])将套接字设置为被动模式。之后你可以使用'gen_udp:recv / 3`来读取套接字。