erlang : SSL에서 응답 받기

random_user

-behavior(gen_mod)ejabberd 내부에 새 모듈 ( )을 추가했고 서버에 대한 SSL 연결을 열고 ssl connection ( ssl:send()함수)을 사용하여 직접 메시지를 보낼 수있었습니다 . 그러나 이후에는 답변을받을 수 없습니다.

  • 나는 receiveerlang 옵션을 사용하여 메시지를 잡으려고 시도했지만 여전히 운이 없습니다.
  • gen_server동작 을 사용하여 모듈을 상태 저장 모듈로 변경하려고 시도했지만 여전히 handle_info메시지가 있는 호출을 관찰하지 않습니다 .
  • 나는 ssl:recv/2어느 쪽도 사용하여 어떤 응답도 얻을 수 없었다 .

내가 뭔가를 놓치고 있습니까? erlang의 SSL 소켓에서 비동기식으로 응답을 받으려면 어떻게해야합니까?

어떤 포인터라도 정말 감사하겠습니다. 감사합니다!

코드 : 코드의 관련 부분 만 추가합니다.

sendPacketToServer() ->
 case ssl:connect(Gateway, Port, Options, ?SSL_TIMEOUT) of
        {ok, Socket} ->
            ssl:controlling_process(Socket, self()),
            Packet = .....,
            Result = ssl:send(Socket, Packet),
            receiveMessage(),
            ssl:close(Socket),
            ?INFO_MSG("~n~n~n~n Successfully sent payload to the server, result: ~p for the user: ~p", [Result, Username]);
        {error, Reason} = Err ->
            ?ERROR_MSG("Unable to connect to the server: ~s for the user: ~p", [ssl:format_error(Reason), Username]),
            Err
 end
...
....
receiveMessage() ->
  receive ->
      {ssl, Msg, Data} ->  % incoming msg from SSL, send it to process
      ......
    {ssl_closed, Msg} ->  % incoming msg from SSL, send it to process
      .....
    {ssl_error, Msg} ->  % incoming msg from SSL, send it to process
      .....
    {ssl_passive, Msg} ->  % incoming msg from SSL, send it to process
      ....
  end.

gen_server에 대한 다음 코드를 추가했습니다 : (다음을 수행 할 때 소켓을 즉시 닫지 않지만 여전히 작동하지 않습니다).

start(Host, Opts) ->
        gen_mod:start_child(?MODULE, Host, Opts).
stop(Host) ->
        gen_mod:stop_child(?MODULE, Host).
init([ServerHost|_]) ->
    Opts = gen_mod:get_module_opts(ServerHost, ?MODULE),
    start(ServerHost, Opts),
    {ok, #state{host = ServerHost}}.

handle_call(Request, From, State) ->
    ?WARNING_MSG("Unexpected call from ~p: ~p", [From, Request]),
    {noreply, State}.
handle_cast(Msg, State) ->
    ?WARNING_MSG("Unexpected cast: ~p", [Msg]),
    {noreply, State}.
handle_info(Info, State) ->
    ?WARNING_MSG("Unexpected info: ~p", [Info]),
    {noreply, State}.
terminate(_Reason, State) ->
    ok.
code_change(_OldVsn, State, _Extra) -> {ok, State}.
random_user

모든 메시지에 대한 명시 적 콜백이 있기 때문에 gen_server 모듈을 사용하여 문제를 극복 할 수있었습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CefSharp Javascript에서 응답 받기

분류에서Dev

axios에서 빈 응답 받기

분류에서Dev

qunit에서 recursion (-2) 응답 받기

분류에서Dev

ProximityKit KitUrl android에서 JSON 응답 받기

분류에서Dev

aspx 페이지에서 응답 받기

분류에서Dev

PHP에서 JSON 응답 받기

분류에서Dev

API에서 JSON으로 응답 받기

분류에서Dev

PHP에서 json 응답 받기

분류에서Dev

simple_udp_connection에서 응답 받기

분류에서Dev

MvcResult 개체에서 응답 받기

분류에서Dev

AJAX / PHP에서 응답 받기

분류에서Dev

Erlang : 질의 및 응답에`Ref` 사용

분류에서Dev

Alamofire 응답 받기

분류에서Dev

Elasticsearch 응답 받기

분류에서Dev

Ajax 응답 받기

분류에서Dev

Spring REST 서비스에서 Android에서 응답 받기

분류에서Dev

JavaScript에서 TIFF 파일로 응답 받기 읽기

분류에서Dev

Worklight에서 HTTP 어댑터에서 응답 받기

분류에서Dev

Swift 클라이언트의 TCP 서버에서 응답 받기

분류에서Dev

개조를 통해 서버에서 응답 받기

분류에서Dev

PHP의 웹 서비스에서 XML 응답 받기

분류에서Dev

Erlang Chicagoboss가 올바른 JSON 응답을받지 못함

분류에서Dev

개조에서 불완전한 응답 받기

분류에서Dev

ngrx @ effects에서 구성 요소로 오류 응답 받기

분류에서Dev

Angular-둘 이상의 요청에서 응답 받기

분류에서Dev

RTC에서 항상 응답으로 HTML 받기

분류에서Dev

ionic의 HTTP 요청에서 응답 받기

분류에서Dev

vb.net의 httpwebrequest에서 Json 응답 받기

분류에서Dev

wsh 스크립트에서 응답 받기