|
* Incoming message */
ETERM *fromp, *tuplep, *fnp, *argp, *resp;
int res;
erl_init(NULL, 0);
if (erl_connect_init(1, "secretcookie", 0) == -1)
erl_err_quit("erl_connect_init");
if ((fd = erl_connect("e1@idril")) < 0)
erl_err_quit("erl_connect");
fprintf(stderr, "Connected to ei@idril\n\r");
while (loop) {
got = erl_receive_msg(fd, buf, BUFSIZE, &emsg);
if (got == ERL_TICK) {
/* ignore */
} else if (got == ERL_ERROR) {
loop = 0;
} else {
if (emsg.type == ERL_REG_SEND) {
fromp = erl_element(2, emsg.msg);
tuplep = erl_element(3, emsg.msg);
fnp = erl_element(1, tuplep);
argp = erl_element(2, tuplep);
if (strncmp(ERL_ATOM_PTR(fnp), "foo", 3) == 0) {
res = foo(ERL_INT_VALUE(argp));
} else if (strncmp(ERL_ATOM_PTR(fnp), "bar", 3) == 0) {
res = bar(ERL_INT_VALUE(argp));
}
resp = erl_format("{cnode, ~i}", res);
erl_send(fd, fromp, resp);
erl_free_term(emsg.from); erl_free_term(emsg.msg);
erl_free_term(fromp); erl_free_term(tuplep);
erl_free_term(fnp); erl_free_term(argp);
erl_free_term(resp);
}
}
}
}
代码就参照上面的方法编译了
最后,如果对erlang有什么问题或者对某些技术感兴趣的,都可以回帖告诉我。我看到就会找时间研究一下,做一个分享或讨论。
扩展阅读:
erlang与java构建的节点通讯
erlang节点通讯例子及问题分析
erlang在windows下和虚拟机节点通信
Windows下使用NIF扩展Erlang方法
参考:http://blog.csdn.net/mycwq/article/details/40836273
http://www.erlang.org/doc/tutorial/cnode.html
|