[python] Client+Server - povodne: subprocess, pipes

Koumes21 koumes21 na gmail.com
Čtvrtek Říjen 11 16:28:03 CEST 2007


Děkuji, je to zajímavý nápad. Socket jsem využíval jen ke spojení
mezi počítači. To abych se ujjistil, že připojení je z místního počítače
použiji address[0]=="127.0.0.1", kterou vrací s.accept(). Za pomoc
děkuji, s detaily si poradím sám.

Koumes21

11.10.07, RMiklos na pss.sk <RMiklos na pss.sk>:
>
> >Já bych ale potřeboval,
> >aby se "server" nezapínal jako podproces, ale aby například oba
> >programy zapnul uživatel a oni se sami poznaly a začaly spolu
> >komunikovat.
>
> Tak to urob ako client-server. Uzivatel spusti server, spusti client,
> server prijme data od klienta a vrati mu data.
>
> Tu je maly priklad, ktory som si odlozil - najdes ho niekde na webe:
> Server prijima data od clienta, transformuje ich na uppercase a posiela
> naspat clientovi.
>
> --------------------------- server.py ------------------------
> #!/usr/bin/env python
>
> """
> A simple echo server
> """
>
> import socket, string
>
> host = ''
> port = 50000
> backlog = 5
> size = 1024
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.bind((host,port))
> s.listen(backlog)
> while 1:
>     client, address = s.accept()
>     data = client.recv(size)
>     if data:
>         print "Receiving data from client: %s" % data
>         data = string.upper(data)
>         print "Sending data to client    : %s" % data
>         client.send(data)
>     client.close()
>
> --------------------------- client.py ---------------------------
> #!/usr/bin/env python
>
> """
> A simple echo client
> """
>
> import socket
>
> host = 'localhost'
> port = 50000
> size = 1024
> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> s.connect((host,port))
> data = 'Hello, world'
> print "Sending data to server    : %s" % data
> s.send(data)
> data = s.recv(size)
> print 'Receiving data from server: %s' % data
> s.close()
>
>
>
>
>
>
> Koumes21 <koumes21 na gmail.com>
> Sent by: python-bounces na py.cz
> 10.10.2007 21:02
> Please respond to
> Konference PyCZ <python na py.cz>
>
>
> To
> "Konference PyCZ" <python na py.cz>
> cc
>
> Subject
> [python] subprocess, pipes
>
>
>
>
>
>
> Dobrý den,
> udělal jsem si dva jednoducé prográmky abych si vyzkouše
> komunikaci mezi procesy. Jeden z nich jednoduše vypisuje to, co do něj
> napíšete:
>
> import sys
>
> while 1:
>     c1=sys.stdin.read(1)
>     sys.stdout.write(c1)
>     sys.stdout.flush()
>
> Tento první jsem změnil na exe soubor modulem py2exe.
> Druhý program spustí ten první a posílá do něj to co uživatel
> napíše a to co se vrátí tiskne na obrazovku:
>
> import subprocess,sys,thread
>
> pipe = subprocess.Popen("server.exe",
> stdin=subprocess.PIPE,
> stdout=subprocess.PIPE)
>
> def reciever():
>     while 1:
>         c1=pipe.stdout.read(1)
>         sys.stdout.write(c1)
>
> thread.start_new(reciever,())
>
> while 1:
> ....c1=sys.stdin.read(1)
> ....pipe.stdin.write(c1)
>
> Je mi jasné, že program není ještě dokončený, ale jde o princip.
> V tomto okamžiku vše správně funguje. Já bych ale potřeboval,
> aby se "server" nezapínal jako podproces, ale aby například oba
> programy zapnul uživatel a oni se sami poznaly a začaly spolu
> komunikovat. Kdyby někdo věděl a poradil mi, budu mu jistě vděčný.
>
> Koumes21_______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Mgr. Ing. Roman MIKLÓŠ
> Prvá stavebná sporiteľňa a.s.
> Bajkalská 30, P. O. Box 48
> 829 48  Bratislava 25
> Tel.: +421/ 2 / 582 31 174
> Fax: +421/ 2 / 582 31 109
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20071011/6568443a/attachment.html 


Další informace o konferenci Python