Erlang noob寻求快速代码审查

Erlang noob寻求快速代码审查,erlang,freeswitch,Erlang,Freeswitch,大家好 Erlang非常新,来自C/C++/Java。我一直在玩代码,把自己的范围缩小到一个地步,一秒钟的指导可能会帮我节省半天的时间。所以我有一个小型telnet客户端,我打算连接到freeswitch esl端口,让我像在fs_cli中一样向端口发出命令。(我想最重要的是…我正在尝试与一个我应该能够通过telnet进行通信的端口进行通信)。当Linux telnet工作正常时,erlang应用程序失败。我相信这个问题是简单而微妙的;感谢您的帮助 下面是使用Linux telnet进行会话的过

大家好

Erlang非常新,来自C/C++/Java。我一直在玩代码,把自己的范围缩小到一个地步,一秒钟的指导可能会帮我节省半天的时间。所以我有一个小型telnet客户端,我打算连接到freeswitch esl端口,让我像在fs_cli中一样向端口发出命令。(我想最重要的是…我正在尝试与一个我应该能够通过telnet进行通信的端口进行通信)。当Linux telnet工作正常时,erlang应用程序失败。我相信这个问题是简单而微妙的;感谢您的帮助

下面是使用Linux telnet进行会话的过程:

$>telnet localhost 8021  
Trying localhost...  
Connected to localhost.  
Escape character is '^]'.  
Content-Type: auth/request  

auth password<ENTER>  
<ENTER>  
Content-Type: command/reply  
Reply-Text: +OK accepted  

log 1<ENTER>  
<ENTER>  
Content-Type: command/reply  
Reply-Text: +OK log level 1 [1]   
…下面是一个使用erlang客户端的运行:

$>erl  
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]  

Eshell V5.9.1  (abort with ^G)  
1> c(getty).  
{ok,getty}  
2> getty:s().  
{{2012,7,12},{10,15,0}} Connected to localhost 8021.  
Command> auth password  
Command is: "auth password\r\n\r\n"  
Response: {error,closed}  
Response: {error,closed}  
Command>   

关于使用erlang客户端的不同结果有什么线索吗?蒂亚

通过使用{packet,2},您声称发送的数据包将带有一个声明数据包大小的2字节报头,并且您希望服务器也发送这样的报头。Telnet不这样做,因此如果您试图模拟Telnet客户端,请不要指定数据包模式为2。相反,使用0或raw作为数据包类型,以指定无头。我相信不使用packet选项也默认为no header。

通过使用{packet,2},您声称发送的数据包将使用一个2字节的报头声明数据包的大小,并且您希望服务器也发送这样的报头。Telnet不这样做,因此如果您试图模拟Telnet客户端,请不要指定数据包模式为2。相反,使用0或raw作为数据包类型,以指定无头。我相信,去掉packet选项也默认为no header。

是的,就是这样。谢谢当然,当我学习和修改代码时……我知道我的是Erlang世界中的业余逻辑,所以我会继续改进和修改。但你在眼前的问题上一针见血。去了{packet,raw}并处理了一些其他的选项,事情按照我的预期进行。再次感谢您抽出时间回答;谢谢!是的,就是这样。谢谢当然,当我学习和修改代码时……我知道我的是Erlang世界中的业余逻辑,所以我会继续改进和修改。但你在眼前的问题上一针见血。去了{packet,raw}并处理了一些其他的选项,事情按照我的预期进行。再次感谢您抽出时间回答;谢谢!
$>erl  
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]  

Eshell V5.9.1  (abort with ^G)  
1> c(getty).  
{ok,getty}  
2> getty:s().  
{{2012,7,12},{10,15,0}} Connected to localhost 8021.  
Command> auth password  
Command is: "auth password\r\n\r\n"  
Response: {error,closed}  
Response: {error,closed}  
Command>