[python] Client+Server - povodne: subprocess, pipes
    RMiklos na pss.sk 
    RMiklos na pss.sk
       
    Čtvrtek Říjen 11 09:38:06 CEST 2007
    
    
  
>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 
    
    
Další informace o konferenci Python