在erlang中通过UDP发送数据包

发布于 2024-11-05 19:13:12 字数 295 浏览 5 评论 0原文

所以我试图将 udp 数据包发送到计算机上的侦听端口,该计算机未连接到同一 LAN,但可以通过 erlang 中的 gen_udp 访问互联网。

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

so i'm trying to send udp packet to a listening port on a computer which is not connected to the same LAN but has internet access via gen_udp in erlang.

I start my first node by opening the port
({ok, Socket} = gen_udp:open(8887).) and the open the port on the other node the same way, When i send a packet from one node to the other via gen_udp:send i don't receive anything (trying flush() on the receiving node), So i'm wondering if there is something i'm doing wrong ? , i checked the firewalls and erlang and epmd is permitted.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淤浪 2024-11-12 19:13:12

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

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

您还可以尝试使用 inet:setopts(Socket, [{active , false}]) 打开后。之后您可以使用 'gen_udp:recv/3` 从套接字读取。

did you try setting the controlling process of the Socket as the current process via :
gen_udp:controlling_process(Socket,Pid) ?

You should then setup a receive loop and messages will be sent to you. The format of the messages should be : {udp, Socket, IP, InPortNo, Packet}

You could also try setting the socket to passive mode by using inet:setopts(Socket, [{active, false}]) after you have opened it. After which you can use 'gen_udp:recv/3` to read from the socket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文