[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