【发布时间】:2012-01-16 21:26:38
【问题描述】:
我正在尝试通过 telnet 向我的应用程序发送一个长字符串。
在我的应用程序中,我设置了一个套接字:
{ok, Sock} = gen_tcp:listen(Port, [{active, true}, {reuseaddr, true}],
{ok, Sock} = gen_tcp:accpet(Sock),
% start a process when someone connects
{ok, Pid} = my_sup:start_handler(Sock),
inet:setopts(Socket,[{active, once},{buffer, 2310731}, {recbuf, 1310731},{sndbuf, 1310731}]),
gen_tcp:controlling_process(Socket, Pid),
我处理已连接客户端的进程是 gen_server,我使用标准
handle_info ({tcp, Sock, Data}, State) ->
接收和处理来自发件人的传入消息。
最初,我只能发送大约 1,500 个字符的字符串,然后我添加了 setopts/2 命令来增加缓冲区大小。但我无法让套接字处理超过 3,160 个字符。
我已通过 getopts 打印出这些值,并验证它们是 setopts/2 调用中所表示的值。
我可以利用我的 http 接口来 POST 至少 4 倍大的字符串值,并且可以通过 telnet/socket 客户端获取它们...
我错过了什么?
【问题讨论】: