[Tutor] sockets, servers, clients, broadcasts...?
Alex Hall
mehgcap at gmail.com
Fri Jun 4 23:50:18 CEST 2010
On 6/4/10, Alan Gauld <alan.gauld at btinternet.com> wrote:
>
> "Alex Hall" <mehgcap at gmail.com> wrote
>
>> connect to you as a client. It appears, though, that I need a loop
>> to
>> have a server make any sense at all, to handle incoming data and
>> connection requests.
>
> You need to listen then process incoming messages then listen some
> more, so yes you will need a loop. Probaqbly an infinite one:
>
> while True:
> listen()
> if someQuitMessage:
> break
> process()
>> rest of my program on hold. Am I safe to use basic threading to
>> stick
>> the server's loop into a new thread?
>
> For your game you don't need to do that. A single thread should
> suffice.
The idea is to have every instance of the game start up a server (if
it is configured to do so by the user). So when a client connects to
you, you and the client exchange data (ship positions, board size, and
so on), then each move by you sends results to the client and each
move by the client sends results to you. For example, the client fires
at square A1. As soon as that happens, a toople something like
("shell","a1")
is sent to you, the server. You then see if that was a hit or a miss
on one of your ships and inform the user accordingly. Currently, the
game is based on an accelerator table inside a wx Frame, but I think
what I will do is put the calls to server.send() as required in each
function called by the accelerator table. I am not sure how I would
insert this into the server's loop; as it stands, it seems much more
intuitive to have the server spinning its wheels, waiting for things
to happen. Again, I am very new to all this, so maybe there is a
better way, but I do not know how I would put all the game logic into
a huge while loop. Oh, I am using the "toomi" library, which provides
basic client and server classes and seems to do what I need, at least
for now.
> But usually a server's listen loop is the main thread and the
> processing
> goes into the sub threads.
>
>> program be able to talk to the server / will the server be able to
>> talk to my program from its new home in its separate thread,
>
> Look at the example in my tutorial. It doesn't use threads but
> services two separate clients without lockup. (Albeit it doesn't
> care about context...)
What is the link for the tutorial? Also, maybe a bit off topic, what
is a context? I dealt with them a lot in Android programming last
semester, but I still do not get them, and I thought they were just an
Android/Java thing.
>
> --
> Alan Gauld
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
--
Have a great day,
Alex (msg sent from GMail website)
mehgcap at gmail.com; http://www.facebook.com/mehgcap
More information about the Tutor
mailing list