문제

두 개의 Erlang 노드가 서로 통신하도록 시도 중입니다.하나는 Ubuntu 시스템에, 다른 하나는 Windows XP에 있습니다.

우리는 "허용되지 않는 노드에서 연결 시도" 메시지는 한 노드가 다른 노드로부터 메시지를 수신하는 것을 방지합니다.

둘 다 Erlang OTP의 5.XXX 버전을 사용하고 있습니다.

두 노드 모두 동일한 쿠키( .erlang.cookie)를 갖습니다.

다음을 사용하여 수신자 노드를 시작합니다.

erl -name fred@ipaddress

그리고 'fred@ipaddress'(작은따옴표로 묶음)를 사용하여 해당 함수를 호출합니다.

우리는 방화벽을 껐습니다.

그렇다면 연결을 방해하는 또 다른 요인은 무엇일까요?

업데이트 :우리는 erlang:get_cookie()를 사용하여 두 노드의 쿠키를 확인하고 있으며 값이 다릅니다.이것이 문제입니까?우리는 두 컴퓨터에서 erlang을 실행하는 디렉터리에 동일한 .erlang.cookie 파일을 넣어 쿠키를 설정한다고 생각합니다.하지만 어쩌면 이곳이 잘못된 곳일까요?

업데이트 2:모두들 답변해주셔서 감사합니다.우리는 Ranok이 우리에게 잘 맞았기 때문에 답으로 선택했습니다.쿠키를 설정하는 다른 방법도 괜찮을 것이라고 확신합니다.

도움이 되었습니까?

해결책

또한 Erlang 시스템을 시작하면 CommandLine 플래그가 있습니다. -setcookie 시작 시간에 쿠키를 지정할 수 있습니다.

erl -name fred@ipaddress -setcookie FOOBAR

도움이되기를 바랍니다. 야곱

다른 팁

각 노드의 쿠키를 확인하여 시작하십시오. 쉘에서 :

erlang:get_cookie().

동일하지 않은 경우 노드 쿠키 중 하나를 다른 것과 일치하도록 변경하십시오.

erlang:set_cookie(node(), "newcookie").

모든 것이 작동하면 구성 파일 또는 명령 줄 Arg에서 쿠키 설정이 선택되지 않는 이유를 확인해야합니다.

Erlang 쿠키는 사용자 디렉토리에 있어야 합니다.응용 프로그램 디렉터리가 아닙니다.

그래서 당신의 것은 다음과 같습니다:

C:\Documents and Settings\InterstarUser\.erlang.cookie

다음 명령을 사용하여 HOME의 위치를 ​​확인할 수 있습니다. env Windows 시절을 올바르게 기억한다면 명령줄에서.

net_adm : ping ()

두 노드에서 net_adm : ping ()을 사용해보십시오.

http://www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html

erlang:set_cookie(node(), 'newcookie').

~ 아니다

erlang:set_cookie(node(), "newcookie").

몇 가지가 떠 오릅니다.

  1. 두 노드에서 erlang : set_cookie를 통해 쿠키를 설정해 보셨습니까?
  2. NO .erlang.cookie 파일이 $ 홈 디렉토리에 있습니다. .erlang.cookie 파일 중 하나가 한 컴퓨터의 올바른 위치에 있지 않습니까? 파일에 대한 하드 드라이브를 검색 할 수 있으며 생성 된 파일보다 더 많은 것을 찾으면 Erlang이 그것을 넣고 사용하고있을 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top