[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