有没有办法从Erlang中的套接字读取整行,还是需要在gen_tcp:recv
之上手动实现行缓冲?
答案 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