[erlang-questions] Problems in erl_accept

J Bhanot <>
Fri Feb 1 09:23:23 CET 2008


thanks Gleb...

I had to publish my C node and then it was being shown in Erlang node by 
executing this command:

nodes(hidden).

but now when i want it to accept connection - I have added following 
code..

memset((char *) &remote, 0, sizeof(remote));
if(erl_accept(sockfd, &remote) == ERL_ERROR)
erl_err_sys("accept");


where remote is declared at the top as

ErlConnect remote;

and sockfd is the same socket which I have used in connecting to Erlang 
node, binding/listening and have made this port as non blocking as well

but now when I execute code for C node..

I am getting following error:

accept: Bad file descriptor

Any ideas on that..

Regards,
jb

____________________________________________



Gleber <> 
02/01/2008 12:01 AM

To
"J Bhanot" <>, 
cc

Subject
Re: [erlang-questions] Erlang C Communication - process completes but 
nodes are not connected






Hello.

This is my first post to this list, so i'm sorry for any mistakes :)

IIRC, C nodes are hidden nodes, hence net_adm:world() will not show
them. Use nodes(hidden). to list hidden nodes.

Regards,
Gleb Peregud

On 1/31/08, J Bhanot <> wrote:
> Hi,
>
> I am using C node as client
> []
>
> #include <stdio.h>
> #include <signal.h>
> #include<string.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> #include <sys/fcntl.h>
>
> #include "erl_interface.h"
> #include "ei.h"
>
> #define PORT 6666
>
> int sockfd, epmdfd;
>
> main()
> {
>
> struct in_addr addr;
> erl_init(NULL, 0);
>
> printf("Initializing ...");
>         if(!erl_connect_init(69, "SFEWRG34AFDSGAFG35235", 0))
>                {
>                 printf("\nerror in initialisation");
>                 erl_err_sys("erl_connect_init");
>                 printf("\nafter error in init");
>                 }
>         printf(" done.\n");
>         printf("node=%s, host=%s, alive=%s, creation=%d\n ",
>                         erl_thisnodename(), erl_thishostname(),
>                         erl_thisalivename(), erl_thiscreation());
>
>
>
>
>     /*This is the short host name outgoing connect routine  */
>         printf("Connecting ...");
> usleep(5000);
> getchar(); //for checking
>         if((sockfd = erl_connect("")) < 0)
>
>       //  if((sockfd = erl_connect("")) < 0)
> {
>         printf("in error");
>         erl_err_sys("erl_connect");
> }
>         printf("\nsock = %d\n", sockfd);
>         erl_err_sys("erl_connect");
>         printf(" done.\n");
>
> }
>
> [/code]
>
> and Erlang node as server ''
>
> Steps to run Erlang node :
>
>
> erl -setcookie SFEWRG34AFDSGAFG35235 -name node1
> Created a file named $HOME/.hosts.erlang having contents as
> ''.
> ''.
>
>
> The output for c file upon execution is
>
> [ otp_src_R12B-0]# ./mytest
> Initializing ... done.
> node=, host=localhost, alive=c69, creation=0
>  Connecting ...
> sock = 3
> erl_connect: Success
>
>
> but at erlang node when i execute the command :
> ()8> net_adm:world().
>
> i get the output as :
> []
>
> similalry
>
> ()9> nodes().
> []
> ()10>
>
>
> That is no node is connected to it....
>
> Now the point is C node has successfully connected ....
>
> Why Erlang node is not showing it as connected....
>
> Do we need to register the C node with EPMD even when it is acting as a
> client...
>
> Do we need to register Erlang node with EPMD as well and if yes the how 
do
> we do that..
>
> Note : I am using putty to connect to single linux server (FC8).
>
> Appreciate your help...
>
> Many Thanks,
>
> jb
>
>
>
>
>
> ____________________________________________
> =====-----=====-----=====
> Notice: The information contained in this e-mail
> message and/or attachments to it may contain
> confidential or privileged information. If you are
> not the intended recipient, any dissemination, use,
> review, distribution, printing or copying of the
> information contained in this e-mail message
> and/or attachments to it are strictly prohibited. If
> you have received this communication in error,
> please notify us by reply e-mail or telephone and
> immediately and permanently delete the message
> and any attachments. Thank you
>
>
>


-- 
Gleb Peregud
http://gleber.pl/

"Only two things are infinite, the universe and human stupidity, and
I'm not sure about the former."
--  Albert Einstein

ForwardSourceID:NT0000E136 
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080201/d16a25c0/attachment.html>


More information about the erlang-questions mailing list