Discussion:
Una de sockets
Jordi Ivars
2004-03-16 11:12:14 UTC
Permalink
Hola a todos. Ando estos dias metido con los sockets y realmente, estoy
encantado de lo fácilmente que se pueden tratar con Python. Fácil y rápido,
es genial. Pero bueno, no todo es tan sencillo:). Os cuento mi problema.

Estoy haciendo una aplicacion cliente que se conecta al servidor, hace un ls a
un directorio en el servidor y la respuesta de ese ls se ha de ver en el
cliente. Y no hay manera. El código del servidor (lo he sacado de un manual
en pdf sobre sockets bastante sencillo) es el siguiente:

---
import socket
import sys
import os

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

host = 'localhost'
port = int(5002)

s.bind((host,port))

s.listen(1)

conn,addr = s.accept()

print "Client connectat desde",addr

data = conn.recv(1024)

os.system(data)
data=os.system(data)

conn.send(data)

conn.close()
--

Los datos que recibo del cliente (data) los paso a un os.system (el cliente
envia un comando de sistema). Luego lo que quiero es que la salida de ese
os.system se vuelva a enviar al cliente (conn.send(data)) pero no hay manera
ya que conn.send solo acepta enviar strings y la salida del os.system lo coge
com int. Es decir, que con os.system no creo que se pueda hacer ya que estoy
pensando que estara devolviendo 0 y 1 y no lo que yo quiero que devuelva, que
es el comando en si. Asi que, escribiendo esto, me doy cuenta de que voy mas
perdido de lo que creia:)

¿Alguien se ha visto en un dilema similar? ¿Alguna idea?

Y nada, muchísimas gracias a todos, como siempre:)

Saludos
--
Jordi Ivars Oller
Servicio Técnico Ultimobyte España SL
Afonso Fernández Nogueira
2004-03-16 11:35:17 UTC
Permalink
Post by Jordi Ivars
os.system(data)
data=os.system(data)
conn.send(data)
conn.close()
--
Los datos que recibo del cliente (data) los paso a un os.system (el cliente
envia un comando de sistema). Luego lo que quiero es que la salida de ese
os.system se vuelva a enviar al cliente (conn.send(data)) pero no hay manera
ya que conn.send solo acepta enviar strings y la salida del os.system lo coge
com int. Es decir, que con os.system no creo que se pueda hacer ya que estoy
pensando que estara devolviendo 0 y 1 y no lo que yo quiero que devuelva, que
es el comando en si. Asi que, escribiendo esto, me doy cuenta de que voy mas
perdido de lo que creia:)
Prueba con os.popen().

pipe = os.popen(comando)
resultado = pipe.read()


un saludo,
Fonso

Continúe leyendo en narkive:
Loading...