URL: https://www.overclockers.at/coding-stuff/python-socket-server_237031/page_1 - zur Vollversion wechseln!
ich bräuchte Hilfe in Python, ich habe hier einen Socket Server:
Code:import SocketServer import os class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): while 1: self.data = self.request.recv(1024).strip() if not self.data: break print "{} wrote:".format(self.client_address[0]) print self.data os.popen('./send %s' % self.data) self.request.sendall('100') if __name__ == "__main__": HOST, PORT = "", 54321 server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()
Code:Connected to localhost. Escape character is '^]'. hello 100 Connection closed by foreign host
Code:Connected to localhost. Escape character is '^]'. hello Output from shell script 100 Connection closed by foreign host
Du willst den output von deinem script zu jedem Client echo'n?
Out musst du dann halt noch behandeln.Code:import subprocess proc = subprocess.Popen("deinscript.sh", stdout = subprocess.PIPE) out, err = proc.communicate()
macht ma das nicht heutzutage mit subprocess.check_output() statt .Popen()? http://docs.python.org/2/library/su...bprocess-module
eigentlich möchte ich nur
den output von
os.popen('./send %s' % self.data)
echo`n an den "fragenden" Client, sofern dies möglich ist.
wie gesagt, subprocess.check_output sollte das tun.
zu os.popen meinen die python docs übrigens: Deprecated since version 2.6: This function is obsolete. Use the subprocess module. Check especially the Replacing Older Functions with the subprocess Module section.
http://docs.python.org/2/library/os...object-creation
btw, os.popen liefert dir ein file object zurück, von dem du lesen kannst, da sollte dann auch der output drinstehen. solltest du unbedingt os.popen verwenden wollen, sollte dir
oder so ähnlich weiterhelfen. (untested)Code:fobj = os.popen('./send %s' % self.data) self.request.sendall(fobj.readlines()) fobj.close()
@Taltos: perfekt - vielen Dank, das wars
bitte :-)
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025