[muscle] Re: peer-to-peer help intro

  • From: barry brant <bacondog835710@xxxxxxxxx>
  • To: muscle@xxxxxxxxxxxxx
  • Date: Sat, 30 Apr 2005 21:20:52 -0700 (PDT)

Thanks for the fast reply Jeremy!  

I am writing in C++ and though I learned it in
university, it's been quite a number of years since
I've touched it.  I'm writing for Win32, and for my
first project I want to do a simple chat app
(peer-to-peer) where the IP addresses of both chat
clients are already known.

So I looked at BeShareAndMuscle.html and based on
that, viewed class Win32MessageTransceiverThread from
the API.  It seems method AddNewConnectSession() will
connect to the IP and port of the other MUSCLE client
I want to do peer-to-peer with, then I can get any
messages by looping for events through
GetNextEventFromInternalThread().  The event code will
tell me whether I have a Message object.  For sending
messages, plainTextClient.cpp shows a method
"sendOutgoingMessage()" of MessageTransceiverThread
but I can't find that in the API.  What do I do to
send a message?

For what I want to do, I can't believe it's this easy.

One fundamental question I have is, is the same code
used for peer-to-peer as for client-server using
muscled?  That is, instead of connecting directly to
your client in peer-to-peer, connect instead to the
server, pattern-match nodes for who to send to, but
then get or send messages in the same way.  Is that

What about client-server with subscriptions?  The
Beginner's guide mentions how to set one up, but
doesn't mention how to subscribe.

Are there some full samples of peer-to-peer and
client-server that I can study?  I couldn't find any.

I hope my questions aren't too ignorant... but I do
appreciate the help.

--- Jeremy Friesner <jaf@xxxxxxxxxxxx> wrote:
> Hi Barry,
> I'm not sure exactly what you have in mind -- MUSCLE
> doesn't have a ready-made "peer-to-peer API", but it
> does have the tools to make it easier to construct a
> peer-to-peer system.  Those tools include:
> 1) A central server (muscled) that can be used as a
> starting point... i.e. your clients can log in to
> the server to find out the IP addresses of other
> participating clients, and then use those IP
> addresses to contact the other clients directly
> 2) A message thread class (MessageTransceiverThread)
> that hides most of the networking details and lets
> you do peer-to-peer communication at a higher level
> (i.e. sending and receiving Message objects instead
> of byte streams, thereby avoiding the hassles of
> message fragmentation/reassembly, byte-gender,
> protocol extension, and other common pitfalls)
> 3) Lower-level APIs such as the MessageIOGateway
> class and the simplified networking API  functions
> in NetworkUtilityFunctions.cpp that let your code
> handle the basic networking tasks directly if you
> prefer not to have a separate I/O thread handle them
> on your behalf.
> Let me know what it is you have in mind (i.e. what
> sort of application you want to create, what
> operating system(s) you want it to run on, what
> programming language(s) you want to write it in,
> etc) and I may be able to give you more specific
> help.
> As for examples, here are two:
> BeShare -- a Napster style file sharing program for
> BeOS (includes source code) 
>   (magazine article)
>    http://www.lcscanada.com/jaf/beshare/index.html 
> (Web page)
> http://www.lcscanada.com/jaf/beshare/BeShare2.27.zip
> (source and BeOS executables)
> FoxRabbitCarrot -- a very simple multiplayer game
> written using Qt, so it runs on Windows, Mac, and
> Linux.  The code is a bit out of date and the game
> isn't all that much fun, but it should do for an
> example.
> http://www.osnews.com/story.php=3Fnews=5Fid=3D1523  
>        (magazine article)
>  (source code)
> http://www.lcscanada.com/jaf/FRC1.00b=5FOSX.tar.gz  
>   (MacOS/X build)
> http://www.lcscanada.com/jaf/FRC1.00b=5FRHat.tar.gz 
>    (Red Hat build)
>    http://www.lcscanada.com/jaf/FRC1.00b=5FWin.zip  
>          (Windows build)
> -Jeremy
> > I've looked at the beginner's guide, the API, and
> > searched through the "test" folder for how to do
> > peer-to-peer calls.  Can someone please point me
> to
> > the direction I need to be looking in terms of
> how-to
> > or maybe a sample=3F  

Do you Yahoo!? 
Yahoo! Small Business - Try our new resources site!

Other related posts: