Jordi Ivars
2004-03-16 11:12:14 UTC
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
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
Jordi Ivars Oller
Servicio Técnico Ultimobyte España SL