我创建了一个udp客户端,需要每隔5秒发送一次消息,所以我写了
start() ->
{ok, Sock} = gen_udp:open(0, []),
send(Sock).
send(Sock) ->
gen_udp:send(Sock, "127.0.0.1", 3211, "hello world"),
timer:sleep(5000),
send(Sock).
我想知道关闭套接字的好地方
答案 0 :(得分:7)
如果您的目标是每5秒发送一条消息,那么您为什么要关闭套接字?如果您有一些逻辑来确定何时发送了足够的消息(例如,您将它们计算在内),那么这将是关闭套接字的地方。
以下是一个如何在长时间运行的过程中计算消息的示例:
start() ->
{ok, Sock} = gen_udp:open(...),
send(Sock, 0),
gen_udp:close(Sock).
send(Sock, N) when N >= ?MAX_MESSAGE_COUNT ->
ok;
send(Sock, N) ->
...
send(Sock, N+1).
通过计算一个给定的数字,而不是向下,您可以在流程运行时通过简单地重新加载代码来更改此数字。