[python] vytvoření serveru
Jakub Vojáček
Jakohv na seznam.cz
Úterý Srpen 15 14:03:43 CEST 2006
Jeětě by to taky šlo udělat tak že by jak říkal geon měl každý klient vlastní server, ale tady narážím na další problém
def vlastni_server(self,cislo):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = cislo
s.bind((host, port))
s.listen(1)
while 1:
con,adr=s.accept()
con.setblocking(1)
try:
data=con.recv(1024)
except:
pass
s.close()
ale ted nebude fungovat hra. Ten server se vytvoří, ale okno se neotevře, protože server je v cyklu while. Proto bych potřeboval upravit kod toho serveru tak aby se mi nesekla hra.
> ------------ Původní zpráva ------------
> Od: Jakub Vojáček <Jakohv na seznam.cz>
> Předmět: [python] vytvoření serveru
> Datum: 15.8.2006 10:04:13
> ----------------------------------------
> Ahoj
> mám takový problém se serverem. Dělám na on-line multiplayer hře. Každý si
> stáhne klienta a když bude puštěný server připojí se. Například když se někdo
> připojí tak to všem ostatním hráčům odešle
> přikaz:self.platno.create_image(x,y,image=obr)
> jak ale udělat funkci, která byčekala až na server přijde nějaká zpráva a pak by
> jí stáhla?
> server:
> import socket
> def zapni_server():
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> host = 'localhost'
> port = 1001
> s.bind((host, port))
> s.listen(1)
> print "on-line"
> while 1:
>
> conn, addr = s.accept()
>
>
> data = conn.recv(100000)
>
> print data
> conn.send(data)
> conn.close()
>
> s.close()
> zapni_server()
>
> ###################
> klient ma dve funkce:
> def posli_rozkaz(self,co):
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> host = "localhost"
> port = 1001
> s.connect((host, port))
> s.send(co)
> s.close()
> def prijem_rozkazu(self):
>
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> host = "localhost"
> port = 1001
>
> s.connect((host, port))
> s.setblocking(0)
> try:
> data= s.recv(1000000)
> exec(data)
>
> except:
> pass
> s.close()
>
>
> Prostě jakmile by jakýkoliv klient odeslal příkaz, hned by se u všech ostatních
> klientů zavolal funkce prijem_rozkazu()
> Blujacker
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
Blujacker
Další informace o konferenci Python