>>Wher you can specify in ServerName which node the server should be started.<br>gen_server:start/start_link(ServerName,..) only have two options:<br>{local,Name}| {global,GlobalName},<br><br>in my project,<br>i want communicate between two process cross nodes without use global option,<br>
if can't do that,i think i must use a global mid- transfer the message <br>like this:pid1---->global Server->pid2<br>             Pid2---->global server ->Pid1<br>but i think pid1->Pid2 more faster than above!<br>
<br>any suggestion is very appreciate<br><br>Best Regards <br>wenew Zhang<br><br><br><div><span class="gmail_quote">2008/4/17, <a href="mailto:erlang-questions-request@erlang.org">erlang-questions-request@erlang.org</a> <<a href="mailto:erlang-questions-request@erlang.org">erlang-questions-request@erlang.org</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Send erlang-questions mailing list submissions to<br>        <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br> <br> To subscribe or unsubscribe via the World Wide Web, visit<br>        <a href="http://www.erlang.org/mailman/listinfo/erlang-questions">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
 or, via email, send a message with subject or body 'help' to<br>        <a href="mailto:erlang-questions-request@erlang.org">erlang-questions-request@erlang.org</a><br> <br> You can reach the person managing the list at<br>
        <a href="mailto:erlang-questions-owner@erlang.org">erlang-questions-owner@erlang.org</a><br> <br> When replying, please edit your Subject line so it is more specific<br> than "Re: Contents of erlang-questions digest..."<br>
 <br> <br> Today's Topics:<br> <br>   1. Re: :  :  Broken ipv6 behavior? (Raimo Niskanen)<br>   2. Re: How to call a locally Pid cross node on       Distributed<br>      Application! (Andreas Hillqvist)<br> <br> <br> ----------------------------------------------------------------------<br>
 <br> Message: 1<br> Date: Thu, 17 Apr 2008 11:48:33 +0200<br> From: Raimo Niskanen <<a href="mailto:raimo%2Berlang-questions@erix.ericsson.se">raimo+erlang-questions@erix.ericsson.se</a>><br> Subject: Re: [erlang-questions] :  :  Broken ipv6 behavior?<br>
 To: Matthew Dempsky <<a href="mailto:matthew@dempsky.org">matthew@dempsky.org</a>>, <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br> Message-ID: <<a href="mailto:20080417094833.GC27385@erix.ericsson.se">20080417094833.GC27385@erix.ericsson.se</a>><br>
 Content-Type: text/plain; charset=us-ascii<br> <br> On Thu, Apr 17, 2008 at 01:18:06AM -0700, Matthew Dempsky wrote:<br> > On Thu, Apr 17, 2008 at 1:03 AM, Raimo Niskanen<br> > <<a href="mailto:raimo%2Berlang-questions@erix.ericsson.se">raimo+erlang-questions@erix.ericsson.se</a>> wrote:<br>
 > >  That patch uses gethostbyname2, which is just as or even more obsoleted<br> > >  than getipnodebyname. I wonder when I (finally) have added<br> > >  getaddrinfo support if there is need for gethostbyname2 support too?<br>
 ><br> > I tested that patch because the author suggested it worked for him on<br> > Linux, and it's a relatively non-intrusive change.  (I don't<br> > particularly care what functions are used for IPv6 support as long as<br>
 > they work.)<br> ><br> <br> I am working on getaddrinfo support. When it seems to work I will publish<br> a source patch for OTP_R12B-2 and then start on the test cases,<br> to get feedback for a final version.<br>
 <br> > >  It is strange getipnodebyname works so differently from gethostbyname2<br> > >  on OS X. They should do the same job.<br> ><br> > Yeah.<br> ><br> > >  The flags to getipnodebyname<br>
 > >  are (AF_V4MAPPED | AI_ADDRINFO), which means that it should return<br> > >  mapped v4 addresses only if no IPv6 addresses are found and<br> > >  that it should return IPv6 addresses only if the machine runs<br>
 > >  IPv6 ("Only if IPv6 configured" according to Solaris 10 headers,<br> > >  "Only if there is an interface on the host that is not a loopback<br> > >  interface that has an IPv6 address" according to Steven's<br>
 > >  Unix Network Programming).<br> ><br> > On OS X, AI_DEFAULT is defined to (AI_V4MAPPED_CFG | AI_ADDRCONFIG).<br> ><br> > I tested various a few different flags options, and <a href="http://ipv6.google.com">ipv6.google.com</a><br>
 > would only resolve when AI_V4MAPPED(_CFG) was *not* set.  0 and<br> > AI_ADDRCONFIG both returned an IPv6 hostent structure.<br> ><br> <br> The header files on MacOS X 10.5.2 says:<br> #define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */<br>
 <br> Would that indicate that the kernel does not support<br> mapped IPv4 addresses or what does it not support?<br> <br> Is this a MacOS X support question?<br> <br> Or just wait for the getaddrinfo patch and see if it works better.<br>
 <br> > >  So maybe gethostbyname2 returns IPv6 records even though your<br> > >  machine has no external IPv6 interface?<br> ><br> > No, every test I have run regarding Erlang and IPv6 in this thread has<br>
 > involved a machine with a globally routable IPv6 address configured.<br> > _______________________________________________<br> > erlang-questions mailing list<br> > <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
 > <a href="http://www.erlang.org/mailman/listinfo/erlang-questions">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br> <br> --<br> <br> / Raimo Niskanen, Erlang/OTP, Ericsson AB<br> <br> <br> ------------------------------<br>
 <br> Message: 2<br> Date: Thu, 17 Apr 2008 11:53:55 +0200<br> From: "Andreas Hillqvist" <<a href="mailto:andreas.hillqvist@gmail.com">andreas.hillqvist@gmail.com</a>><br> Subject: Re: [erlang-questions] How to call a locally Pid cross node<br>
        on      Distributed Application!<br> To: "wenew zhang" <<a href="mailto:wenewboy@gmail.com">wenewboy@gmail.com</a>><br> Cc: <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
 Message-ID:<br>        <<a href="mailto:8268eea30804170253r6782999ah8a53f5d5bdded8df@mail.gmail.com">8268eea30804170253r6782999ah8a53f5d5bdded8df@mail.gmail.com</a>><br> Content-Type: text/plain; charset=ISO-8859-1<br>
 <br> Now you create two processes on the node. A process that starts the gen_server.<br> <br> You should use gen_server:start_link/4:<br>    start_link(ServerName, Module, Args, Options)<br> and/or gen_server:start/4:<br>
    start(ServerName, Module, Args, Options)<br> Wher you can specify in ServerName which node the server should be started.<br> <br> If you still want to start the server on the node by spawning a<br> process, I guess you will have to somhow return the PID (Is a PID<br>
 local?) from the proess you spawned.<br> <br> Because the spawn/4 you use:<br>   Pid=spawn(<a href="mailto:authservernode@wenewlaptop.flashpk.com.cn">authservernode@wenewlaptop.flashpk.com.cn</a>,authserver1,start,[]).<br>
 Returns the spawnde processs. It dose not return the PID to the<br> gen_server it starts.<br> <br> <br> Kind regards<br> Andreas Hillqvist<br> <br> 2008/4/17, wenew zhang <<a href="mailto:wenewboy@gmail.com">wenewboy@gmail.com</a>>:<br>
 > the source code as below,on the first time start the two nodes,i get output<br> > like this:<br> > (socketservernode@wenewlaptop.flashpk.com.cn)2><br> > spawn(<a href="mailto:authservernode@wenewlaptop.flashpk.com.cn">authservernode@wenewlaptop.flashpk.com.cn</a>,authserver1,start,[]).<br>
 > <5869.52.0><br> > Authserver start<br> > Authserver init with []<br> ><br> > and then i start i again,<br> > (socketservernode@wenewlaptop.flashpk.com.cn)3><br> > Pid=spawn(<a href="mailto:authservernode@wenewlaptop.flashpk.com.cn">authservernode@wenewlaptop.flashpk.com.cn</a>,authserver1,start,[]).<br>
 > Authserver start<br> > <5869.54.0><br> ><br> > No" Authserver init with [] " output  on the Init parts,<br> > on the terminate:    io:format("Terminating...~n"),<br> > can't find this output,<br>
 > i use rb nether find log-message on the socketservernode no authservernode<br> ><br> > Best Regards<br> ><br> > Wenew Zhang<br> > %%%%%%%%%%%%Begin%%%%%%%%%%%%%%%%%%%%<br> ><br> > -module(authserver1).<br>
 ><br> > -behaviour(gen_server).<br> ><br> > %% gen_server callbacks<br> > -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,<br> >          code_change/3]).<br> > -export([start_link/0,start/0]).<br>
 ><br> > start_link() -><br> >     io:format("Authserver start_link~n"),<br> >     gen_server:start_link({global, ?MODULE}, ?MODULE, [],[]).<br> ><br> > start() -><br> >     io:format("Authserver start~n"),<br>
 >     gen_server:start({global, ?MODULE}, ?MODULE, [],[]).<br> ><br> > init([]) -><br> >     process_flag(trap_exit, true),<br> >     io:format("Authserver init with []~n"),<br> >     {ok,0}.<br>
 ><br> ><br> ><br> > handle_call({213,Uid,Pwd},_From,State) -><br> >     io:format("PLLogin id:~w Uid:~w   Pwd:~w~n",[213,Uid,Pwd]),<br> >     {reply,213, State}.<br> ><br> > handle_cast(_Msg, State) -><br>
 >     {noreply, State}.<br> ><br> > handle_info({213,Uid,Pwd},State) -><br> >     io:format("PLLogin id:~w Uid:~w   Pwd:~w~n",[213,Uid,Pwd]),<br> >     {noreply, State}.<br> ><br> > terminate(_Reason, _N) -><br>
 >     io:format("Terminating...~n"),<br> >     ok.<br> ><br> ><br> > code_change(_OldVsn, State, _Extra) -><br> >     {ok, State}.<br> > %%%%%%%%%%The end%%%%%%%%%%%%%%%%%%%<br> ><br>
 ><br> ><br> > 2008/4/17, Andreas Hillqvist <<a href="mailto:andreas.hillqvist@gmail.com">andreas.hillqvist@gmail.com</a>>:<br> > > It sounds like the process of the PID has died.<br> > > How do you start your gen_server?<br>
 > ><br> > ><br> > > Kind regars<br> > > Andreas Hillqvist<br> > ><br> > > 2008/4/17, wenew zhang <<a href="mailto:wenewboy@gmail.com">wenewboy@gmail.com</a>>:<br> > ><br> > > > Yes,it's could create a process and use Pid!{Message} send message,<br>
 > > ><br> > > > but i use gen_server behavior  so i want to use<br> > > > gen_server:call(Pid,{Message})  to send message,<br> > > ><br> > > > in my situation, create process successfully,but can't use<br>
 > gen_server:call()<br> > > ><br> > > > 1.why i get the "exception exit: {noproc," message like below?<br> > > > 2.when i use appmon:start() ,i neither find the pid on AuthserverNode<br>
 > nor<br> > > > SocketServerNode.<br> > > ><br> > > ><br> > > ><br> > > > (socketservernode@wenewlaptop.flashpk.com.cn)4><br> > > ><br> > Pid=spawn(<a href="mailto:authservernode@wenewlaptop.flashpk.com.cn">authservernode@wenewlaptop.flashpk.com.cn</a>,authserver1,start,[]).<br>
 > > > <5805.82.0><br> > > > Authserver start_link<br> > > > (socketservernode@wenewlaptop.flashpk.com.cn)5> Pid.<br> > > > <5805.82.0><br> > > > (socketservernode@wenewlaptop.flashpk.com.cn)6><br>
 > > > gen_server:call(Pid,{213,"root","123456"}).<br> > > > ** exception exit: {noproc,<br> > > ><br> > > > {gen_server,call,[<5805.82.0>,{213,"root","123456"}]}}<br>
 > > >      in function  gen_server:call/2<br> > > ><br> > > ><br> > > ><br> > > ><br> > > > ><br> > > > ><br> > > > > > thanks for your reply,<br>
 > > > > > i see a example like you said on Joe 's book,<br> > > > > > can i use gen_server as a rpc:call()'s Arg ?How can i do that?<br> > > > > > tks<br> > > > ><br>
 > > > ><br> > > > > Sure you can.<br> > > > ><br> > > > > rpc:call(Node, yourgenserver, start, [Params]).<br> > > > ><br> > > > ><br> > > > > BTW don't top-post and don't forget to CC to erlang-questions :)<br>
 > > > ><br> > > > > --<br> > > > > With best regards!<br> > > > ><br> > > ><br> > > ><br> > ><br> > > > _______________________________________________<br>
 > > > erlang-questions mailing list<br> > > > <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br> > > > <a href="http://www.erlang.org/mailman/listinfo/erlang-questions">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
 > > ><br> > ><br> ><br> ><br> <br> <br> ------------------------------<br> <br> _______________________________________________<br> erlang-questions mailing list<br> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
 <a href="http://www.erlang.org/mailman/listinfo/erlang-questions">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br> <br> End of erlang-questions Digest, Vol 11, Issue 52<br> ************************************************<br>
 </blockquote></div><br>