Hi Harlan,

In the C++ library, you can get the client's IP address if you decompose a
few classes. First, make sure you're using rpc-twoparty.h directly and not
ez-rpc.h. On the server side, you'll want to copy the class
capnp::TwoPartyServer and modify it a bit. When the code receives a
connection -- whose type is `kj::AsyncIoStream` -- you will want to call
stream->getpeername() to get the client's IP address. You can then
construct a bootstrap capability to use for that specific connection, and
pass the IP address into its constructor. Now your server knows the client
IP!

(In theory, you're supposed to get a similar result more easily by
implementing the `BootstrapFactory` interface... however, with
TwoPartyVatNetwork, this interface currently doesn't tell you anything
interesting except that the other side is a "client". In theory with a
multi-party VatNetwork implementation, you'd expect the VatId passed to the
factory function to have more meaningful information, but we don't have
that at present.)

-Kenton

On Wed, Jul 10, 2019 at 2:14 AM harlan.connor via Cap'n Proto <
[email protected]> wrote:

> Sorry, for not making myself clear!
>
> For a peer-to-peer system to work, there needs to be some way for nodes to
> be introduced to each other. This is generally done by sending over an IP
> address, but (in my understanding) the 3PH system would also facilitate
> this introduction.
>
> 3PH rather appealed to me, as it would mean that the initial connection
> between nodes would be a lot simpler, as I would not have to verify the
> addresses manually (and end up getting it wrong), nor would I have to
> iterate through a list, connecting to each one.
>
> gRPC has "grpc::ClientContext::peer", which returns the URI of the remote.
> I was wondering if capnp had something similar.
>
> Thanks for your help!
>
> On Tuesday, 9 July 2019 21:42:38 UTC+1, Kenton Varda wrote:
>>
>> Hi Harlan,
>>
>> Sorry, but I don't understand your original question. I don't see how
>> obtaining the client's address is related to three-party handoff. I'm not
>> sure I understand exactly what the issue is here; maybe you could provide
>> more details?
>>
>> gRPC doesn't have any concept of three-party handoff -- this is a
>> (planned) feature that only makes sense in object-capability protocols like
>> Cap'n Proto. So if your problem is that 3PH is not yet implemented in Cap'n
>> Proto, I don't understand how using gRPC would solve that.
>>
>> -Kenton
>>
>> On Tue, Jul 9, 2019 at 2:59 AM harlan.connor via Cap'n Proto <
>> [email protected]> wrote:
>>
>>> Ah well, I guess I'll have to use gRPC. I much prefer the schema of
>>> capnp, but I would like to get this to work.
>>>
>>> On Monday, 1 July 2019 22:45:56 UTC+1, Harlan Connor wrote:
>>>>
>>>> I've been trying to implement a Kademlia DHT with capnproto, but I
>>>> cannot work out how to get hold of a client's address.
>>>>
>>>> Whilst scrolling through the various discussions, I have seen that the
>>>> three-party capabilities interface is recommended for similar uses.
>>>> However, it appears that the current implementation either does not exist,
>>>> or would route it throught all the nodes, which since this network should
>>>> scale to many nodes, would be impractical.
>>>>
>>>> I have been using the Ez RPC interface, if that makes any difference.
>>>>
>>>> Does anyone have any ideas?
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Cap'n Proto" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> Visit this group at https://groups.google.com/group/capnproto.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/capnproto/93ce1980-9f11-4db9-91b2-607d8dc79e71%40googlegroups.com
>>> <https://groups.google.com/d/msgid/capnproto/93ce1980-9f11-4db9-91b2-607d8dc79e71%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> Visit this group at https://groups.google.com/group/capnproto.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/capnproto/c1e33090-2666-4291-b2e6-9c83ddbb82fd%40googlegroups.com
> <https://groups.google.com/d/msgid/capnproto/c1e33090-2666-4291-b2e6-9c83ddbb82fd%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/capnproto.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/CAJouXQmGS4S0LaFSnV8jQqOCZp8qta8x5%3Dvc4K2ro66SPfgM0Q%40mail.gmail.com.

Reply via email to