[python] sockety - problem s HTTP spojenim

Tomy novella tomasnovella na gmail.com
Čtvrtek Listopad 22 20:05:04 CET 2007


noo diky :) ako tak tomu chapem :) v podstate asynchat.loop() kazdych
x sekund kontroluje, ci dosli nejake data a ci moze nejake data
poslat. spravne? este by ma zaujimalo, ze kolko je defaultne tych x
sekund ;)

noo a s nadobudnutymi dalsimi vedomostami sa pytam dalsie veci ;)
1) neda mi nedokoncit toho asynchronneho telnet klienta(= bezny
telnet) a spravil som nieco take:

---------------

# atlantis client = v podstate telnet klient
import asyncore, socket

class atlantis_client(asyncore.dispatcher):

    def __init__(self, host="atlantis.talker.sk", port = 23):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect( (host, port) )
        self.host = host
        #self.fill_buffer() #z nejakych pricin nefunguje :(
        self.buffer = "nejaky napisany text\r\n"


    def fill_buffer(self):
        #stale, len co budem zadavt prikaz,ono mi ho odosle na server
*** aspon by malo
        self.buffer = raw_input("zadaj prikaz: ")
        self.bufer += "\r\n"

    def handle_connect(self):
        print "Uspesne som sa pripojil k ",self.host ,"!"

    def handle_close(self):
        self.close()

    def handle_read(self): #cita prijate data
        print self.recv(8192)

    def writable(self):
        return (len(self.buffer) > 0) # buffer nieje prazdny - mozem odoslat

    def handle_write(self): # odosle data z bufferu
        sent = self.send(self.buffer)
        self.buffer = self.buffer[sent:]


c = atlantis_client()


asyncore.loop()

---------------
problem je vsak v podstate rovnaky, ako predtym... resp. neviem, KDE
mam vlozit do tohoto riadok na neustale nacitavanie user vstupu :(
(momentalne som to strcil do konstruktoru[self.buffer = "nejaky
napisany text\r\n"] cize sa vykona len raz:-(  ) poradi niekto?

a podledna tretia otazka je, ze ci by som tu mohol pouzivat funkciu
found_terminator(samozrejme keby som to cele prerobil na asynchat) na
hladanie "\n", cize kde user ukonci zadavanie vstupu a odosle to cele,
alebo sa to da pouzivat, len na strane servra, ked prijimam vstup a
tam hladam ohranicenie?

dikyy :)


2007/11/21, Filip Štědrosnký <regnarg na seznam.cz>:
> Zdravím
> No vlastně asyncore.loop je hlavní smyčkou komunikace, tedy
> obsluhuje události a příslušně na ně reaguje. Má určitý seznam
> objektů, se kterými pracuje (ten jí je buď předán, nebo využívá
> výchozí seznam VŠECH existujících instancí asyncore.dispatcher
> a podobných tříd, což vysvětluje to "magické předání" objektu).
> Konkrétně pak v této hlavní smyčce probíhá volání select(), které
> zjišťuje, zda jsou na některém ze síťových kanálů data k načtení
> a pokud ano, volá příšlušný objekt. Zrovnatak pokud jsou v
> cache pro odeslání některého z objektů data, jsou vyslána do sítě.
> Vzal jsem to stručně, ale snad jsem vystihl základní princip...
>
>
> On St, lis 21, 2007 at 07:00:23 +0100, Tomy novella wrote:
> > ahoj,
> > este by ma zaujimalo, ze co robi asyncore.loop(),
> > pretoze je to zjavne funkcia modulu a nie metoda vztahujuca sa k
> > instancii triedy(myslim triedu asyncore.dispatcher)? cital som manual,
> > ale som nepochopil... kazdych 30 sekund (default) sa snazi *co*
> > urobit? a co robi, ked sa k nicomu nevztahuje? diky :)
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>


-- 
PS: prosim v mailoch tykat! nie vykat ;)

Tom na sQo
tomasnovella na gmail.com


Další informace o konferenci Python