<br><font size=2 face="sans-serif">thanks again Gleber...</font>
<br>
<br><font size=2 face="sans-serif">I have placed problem of accept at lower
priority on my stack as of now...</font>
<br>
<br><font size=2 face="sans-serif">Now, I am trying to send the a simple
"hello world" from my C node to Erlang node ---</font>
<br>
<br><font size=2 face="sans-serif">I have come across 2 ways to do that
- </font>
<br>
<br><font size=2 face="sans-serif">erl send(fd, to, msg)</font>
<br>
<br><font size=2 face="sans-serif">where</font>
<br><font size=2 face="sans-serif">to is an Erlang term containing the
Pid of the intended recipient of the message.</font>
<br>
<br><font size=2 face="sans-serif">Now the query here is is this to PID
of my Erlang node (same PID which we get by doing ps aux | grep "erlangnode")
or this is some other PID</font>
<br>
<br><font size=2 face="sans-serif">and if this is PID(int) which i get
by grep then how do I convert into ETerm (think that should be simple,
but owing to fact that I am a newbie in Erlang - finding it bit difficult
at this moment :-()</font>
<br>
<br>
<br><font size=2 face="sans-serif">Second way to send message is:</font>
<br>
<br><font size=2 face="sans-serif">erl reg send(fd, to, msg)</font>
<br>
<br><font size=2 face="sans-serif">in which </font>
<br>
<br><font size=2 face="sans-serif">to is a string containing the registered
name of the intended recipient of the message.</font>
<br>
<br><font size=2 face="sans-serif">Now question is do i need to regsiter
my Erlang node...</font>
<br>
<br><font size=2 face="sans-serif">I have tried doing so by following commands:</font>
<br>
<br><font size=2 face="sans-serif"> P1 = spawn(fun() -> receive
_ -> ok end end).</font>
<br><font size=2 face="sans-serif"> global:register_name(test, P1).</font>
<br><font size=2 face="sans-serif">global:registered_names().</font>
<br><font size=2 face="sans-serif">[test]</font>
<br>
<br><font size=2 face="sans-serif">Now, I assume that test is regsitered
name for the node...</font>
<br>
<br><font size=2 face="sans-serif">and have tried </font>
<br>
<br><font size=2 face="sans-serif">if(erl_reg_send(sockfd, "test",
cmsg) == 0)</font>
<br>
<br><font size=2 face="sans-serif">but this thing is not working - - is
there any other way of registering the Erlang node and whom with this node
regsiter (EPMD???)</font>
<br>
<br><font size=2 face="sans-serif">Thanks and Regards,</font>
<br><font size=2 face="sans-serif">jb</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Gleber <gleber.p@gmail.com></b>
</font>
<p><font size=1 face="sans-serif">02/01/2008 05:22 PM</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">"J Bhanot" <j.bhanot@tcs.com></font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">Re: Problems in erl_accept</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Sorry. I've never created any C node for erlang, though
I don't know<br>
what is the source of the error... Hence You should wait for answers<br>
from more experienced erlangers from the mailing list :)<br>
<br>
But my intuition says, that problem is probably in sockfd, since it is<br>
the only socket file descriptor ought to be correct :)<br>
<br>
Good luckwith Erlang :) It is fascinating language!<br>
<br>
Regards,<br>
Gleb Peregud<br>
<br>
On 2/1/08, J Bhanot <j.bhanot@tcs.com> wrote:<br>
> thanks Gleb...<br>
><br>
> I had to publish my C node and then it was being shown in Erlang node
by<br>
> executing this command:<br>
><br>
> nodes(hidden).<br>
><br>
> but now when i want it to accept connection - I have added following<br>
> code..<br>
><br>
> memset((char *) &remote, 0, sizeof(remote));<br>
> if(erl_accept(sockfd, &remote) == ERL_ERROR)<br>
> erl_err_sys("accept");<br>
><br>
><br>
> where remote is declared at the top as<br>
><br>
> ErlConnect remote;<br>
><br>
> and sockfd is the same socket which I have used in connecting to Erlang<br>
> node, binding/listening and have made this port as non blocking as
well<br>
><br>
> but now when I execute code for C node..<br>
><br>
> I am getting following error:<br>
><br>
> accept: Bad file descriptor<br>
><br>
> Any ideas on that..<br>
><br>
> Regards,<br>
> jb<br>
><br>
> ____________________________________________<br>
><br>
><br>
><br>
> Gleber <gleber.p@gmail.com><br>
> 02/01/2008 12:01 AM<br>
><br>
> To<br>
> "J Bhanot" <j.bhanot@tcs.com>, erlang-questions@erlang.org<br>
> cc<br>
><br>
> Subject<br>
> Re: [erlang-questions] Erlang C Communication - process completes
but<br>
> nodes are not connected<br>
><br>
><br>
><br>
><br>
><br>
><br>
> Hello.<br>
><br>
> This is my first post to this list, so i'm sorry for any mistakes
:)<br>
><br>
> IIRC, C nodes are hidden nodes, hence net_adm:world() will not show<br>
> them. Use nodes(hidden). to list hidden nodes.<br>
><br>
> Regards,<br>
> Gleb Peregud<br>
><br>
> On 1/31/08, J Bhanot <j.bhanot@tcs.com> wrote:<br>
> > Hi,<br>
> ><br>
> > I am using C node as client<br>
> > []<br>
> ><br>
> > #include <stdio.h><br>
> > #include <signal.h><br>
> > #include<string.h><br>
> > #include <sys/socket.h><br>
> > #include <netinet/in.h><br>
> > #include <arpa/inet.h><br>
> > #include <sys/fcntl.h><br>
> ><br>
> > #include "erl_interface.h"<br>
> > #include "ei.h"<br>
> ><br>
> > #define PORT 6666<br>
> ><br>
> > int sockfd, epmdfd;<br>
> ><br>
> > main()<br>
> > {<br>
> ><br>
> > struct in_addr addr;<br>
> > erl_init(NULL, 0);<br>
> ><br>
> > printf("Initializing ...");<br>
> >         if(!erl_connect_init(69, "SFEWRG34AFDSGAFG35235",
0))<br>
> >                {<br>
> >                 printf("\nerror
in initialisation");<br>
> >                 erl_err_sys("erl_connect_init");<br>
> >                 printf("\nafter
error in init");<br>
> >                 }<br>
> >         printf(" done.\n");<br>
> >         printf("node=%s, host=%s, alive=%s,
creation=%d\n ",<br>
> >                  
      erl_thisnodename(), erl_thishostname(),<br>
> >                  
      erl_thisalivename(), erl_thiscreation());<br>
> ><br>
> ><br>
> ><br>
> ><br>
> >     /*This is the short host name outgoing connect
routine  */<br>
> >         printf("Connecting ...");<br>
> > usleep(5000);<br>
> > getchar(); //for checking<br>
> >         if((sockfd = erl_connect("node1@localhost.localdomain"))
< 0)<br>
> ><br>
> >       //  if((sockfd = erl_connect(""))
< 0)<br>
> > {<br>
> >         printf("in error");<br>
> >         erl_err_sys("erl_connect");<br>
> > }<br>
> >         printf("\nsock = %d\n",
sockfd);<br>
> >         erl_err_sys("erl_connect");<br>
> >         printf(" done.\n");<br>
> ><br>
> > }<br>
> ><br>
> > [/code]<br>
> ><br>
> > and Erlang node as server 'node1@localhost.localdomain'<br>
> ><br>
> > Steps to run Erlang node :<br>
> ><br>
> ><br>
> > erl -setcookie SFEWRG34AFDSGAFG35235 -name node1<br>
> > Created a file named $HOME/.hosts.erlang having contents as<br>
> > 'node1@localhost.localdomain'.<br>
> > 'c69@localhost.localdomain'.<br>
> ><br>
> ><br>
> > The output for c file upon execution is<br>
> ><br>
> > [root@localhost otp_src_R12B-0]# ./mytest<br>
> > Initializing ... done.<br>
> > node=c69@localhost, host=localhost, alive=c69, creation=0<br>
> >  Connecting ...<br>
> > sock = 3<br>
> > erl_connect: Success<br>
> ><br>
> ><br>
> > but at erlang node when i execute the command :<br>
> > (node1@localhost.localdomain)8> net_adm:world().<br>
> ><br>
> > i get the output as :<br>
> > []<br>
> ><br>
> > similalry<br>
> ><br>
> > (node1@localhost.localdomain)9> nodes().<br>
> > []<br>
> > (node1@localhost.localdomain)10><br>
> ><br>
> ><br>
> > That is no node is connected to it....<br>
> ><br>
> > Now the point is C node has successfully connected ....<br>
> ><br>
> > Why Erlang node is not showing it as connected....<br>
> ><br>
> > Do we need to register the C node with EPMD even when it is acting
as a<br>
> > client...<br>
> ><br>
> > Do we need to register Erlang node with EPMD as well and if yes
the how<br>
> do<br>
> > we do that..<br>
> ><br>
> > Note : I am using putty to connect to single linux server (FC8).<br>
> ><br>
> > Appreciate your help...<br>
> ><br>
> > Many Thanks,<br>
> ><br>
> > jb<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > ____________________________________________<br>
> > =====-----=====-----=====<br>
> > Notice: The information contained in this e-mail<br>
> > message and/or attachments to it may contain<br>
> > confidential or privileged information. If you are<br>
> > not the intended recipient, any dissemination, use,<br>
> > review, distribution, printing or copying of the<br>
> > information contained in this e-mail message<br>
> > and/or attachments to it are strictly prohibited. If<br>
> > you have received this communication in error,<br>
> > please notify us by reply e-mail or telephone and<br>
> > immediately and permanently delete the message<br>
> > and any attachments. Thank you<br>
> ><br>
> ><br>
> ><br>
><br>
><br>
> --<br>
> Gleb Peregud<br>
> http://gleber.pl/<br>
><br>
> "Only two things are infinite, the universe and human stupidity,
and<br>
> I'm not sure about the former."<br>
> --  Albert Einstein<br>
><br>
> ForwardSourceID:NT0000E136<br>
> =====-----=====-----=====<br>
> Notice: The information contained in this e-mail<br>
> message and/or attachments to it may contain<br>
> confidential or privileged information. If you are<br>
> not the intended recipient, any dissemination, use,<br>
> review, distribution, printing or copying of the<br>
> information contained in this e-mail message<br>
> and/or attachments to it are strictly prohibited. If<br>
> you have received this communication in error,<br>
> please notify us by reply e-mail or telephone and<br>
> immediately and permanently delete the message<br>
> and any attachments. Thank you<br>
><br>
><br>
><br>
<br>
<br>
-- <br>
Gleb Peregud<br>
http://gleber.pl/<br>
<br>
"Only two things are infinite, the universe and human stupidity, and<br>
I'm not sure about the former."<br>
--  Albert Einstein<br>
</tt></font>
<br><font size=1 color=white face="sans-serif">ForwardSourceID:NT0000E186
   </font>
<br><pre>=====-----=====-----=====
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


</pre>