Erlang gen_tcp和行i / o

时间:2012-06-20 01:21:31

标签: erlang

有没有办法从Erlang中的套接字读取整行,还是需要在gen_tcp:recv之上手动实现行缓冲?

2 个答案:

答案 0 :(得分:5)

您是否尝试过使用

inet:setopts(Socket, [{packet, line}])

请参阅:http://www.erlang.org/doc/man/inet.html#setopts-2

干杯!

答案 1 :(得分:1)

您无需自行实施线路缓冲。

gen_tcp:listen/2接受{packet, line}的{​​{1}}参数,这将使套接字进入行模式,因此对Options的调用将阻塞,直到读完整行。

gen_tcp:recv

确保通过gen_tcp:listen(Port, [{packet, line}]) 选项设置的缓冲区大小对同一个调用(或{buffer, Size})足够大,以使其适合您的所有行,否则它们将被截断。

或者,如果使用Elixir,这应该让你开始:

inet:setopts/2