2013-12-08 3 views
0

이 어플 FIX protocol얼랑 : 렌치

내가 erl -pa ./ebin -pa ebin ./deps/*/ebin를 사용하여 얼랑 쉘을 시작을 만들려고 노력하고 있어요와 연결되어 오류의 오해. 다음과 같이 응용 프로그램을 실행하십시오 : application:start(fix). 그런 다음 "start_listener"함수를 호출합니다 : fix:start_listener(). 결과이 실수가 나타납니다

exception error: no match of right hand side value 
       {error, 
        {{shutdown, 
          {failed_to_start_child,ranch_acceptors_sup, 
           badarg}}, 
         {child,undefined, 
          {ranch_listener_sup,fix_listener}, 
          {ranch_listener_sup,start_link, 
           [fix_listener,10,ranch_tcp, 
           [{port,[8501]}], 
           fix_server,[]]}, 
          permanent,5000,supervisor, 
          [ranch_listener_sup]}}} 
in function fix:start_listener/0 (src/fix.erl, line 21) 

모두 무엇을 의미합니까? 그리고이 실수를 고치는 방법?

내 코드는 다음과 같습니다

`-module(fix). 
-author('Max Lapshin <[email protected]>'). 
-include("log.hrl"). 
    % -include("../include/admin.hrl"). 
-include("../include/business.hrl"). 
-compile(export_all). 

    %% @doc Start acceptor with `ranch' on port, specified in application environment under fix_port%% 
    -spec start_listener() -> {ok, pid()}. 
    start_listener() -> 
    application:start(ranch), 
    Spec = ranch:child_spec(fix_listener, 10, 
    ranch_tcp, [{port, fix:get_value(fix_port)}], 
    fix_server, [] 
    ), 
    {ok, Pid} = supervisor:start_child(fix_sup, Spec), 
     error_logger:info_msg("Starting FIX server on port ~p~n",[fix:get_value(fix_port)]), 
     {ok, Pid}. 

` 이 실수를 보여줍니다 코드 조각입니다.

+0

코드를 입력하십시오. –

답변

4

이 잘못된 :

[{port,[8501]}] 

포트 값은 정수 여야합니다. 수정 : get_value 함수는 8501 대신 [8501] 목록을 반환하고 badarg 오류가 발생합니다.

+0

감사합니다. Erlang 쉘 "ebin"을 실행할 때 실수로 스스로 이상한 것을 발견했습니다. erl -pa ./ebin -pa ./deps/*/ebin 그게 올바른 방법입니다. – user3079158