Daten von TCP in eine Datei umleiten ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Hallo, guten Tag.
Ich möchte bitte Daten von der Variable data in eine Datei umleiten , um sie auszuwerten.
Wie funktioniert das bitte ?

Code: Alles auswählen

import socket
import time
 
TCP_IP = '127.0.0.1'
TCP_PORT = 5410
BUFFER_SIZE = 1024
MESSAGE = "/version"
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))

time.sleep(1)
s.send('1\n') 
time.sleep(1)
s.send('switch to 0.\n')
time.sleep(1)
s.send('run myfirstkos2.\n')
time.sleep(1)

while 1:
	data = s.recv(BUFFER_SIZE)   >>>>>>>>>>> diese Daten umleiten in eine Datei
	print data
	time.sleep(1)
	s.send('\n')
     
conn.close()
Danke.
Gruss
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@funkheld: indem Du eine Datei öffnest (open) und das was Du möchtest hineinschreibst (write). Statt `send` `sendall` verwenden. Warum machst Du nach jedem send eine Sekunde Pause? Das Protokoll ist auch seltsam, dass man einen Strom an Daten bekommt, aber hin und wieder eine Neuezeile-Zeichen senden muß? Statt `while 1` muß es `while True` heißen, und das conn, das nicht definiert ist, wird auch nie erreicht.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Danke.

Das conn sollte s. heißen.
Wenn ich nicht regelmäßig sende bricht der Server ab vom Programm.

Gruss
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@funkheld: wenn der Server nichts sendet, dann sendest Du auch nichts zurück. Einen Timeout kann das send also nicht verhindern. Wie sieht denn der Server aus?
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Von hier ist der Server :
https://krpc.github.io/krpc/python/client.html

Es geht um das Programm "Kerbal"

Danke.
Gruss
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist der doch *Client* fuer den Kerbal Space Program Server. Und das von dir gezeigte Stueck Code erwaehnt den doch gar nicht :K
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Entschuldigung das ist kOS von Kerbal :
https://ksp-kos.github.io/KOS/tutorials.html

Das wird zum Kerbal-Server geschickt:
--------------------------------------------
time.sleep(1)
s.send('1\n')
time.sleep(1)
s.send('switch to 0.\n')
time.sleep(1)
s.send('run myfirstkos2.\n')
time.sleep(1)
---------------------------------------------

Das Script myfirstkos2 wird vom Server mit run gestartet.

Die Daten die zurückkommen kann ich nicht auseinanderfrimeln.

Gruss
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Aber ist es nicht Sinn der Sache krpc zu verwenden, das du eben genau das gefriemel nicht machen musst? Dann sollte das Problem doch viel einfacher zu lösen sein. Und wenn du selbst die RPC Schnittstelle ansprechen willst, dann wird’s fortgeschritten. Mit Protocol buffers. Siehe https://github.com/krpc/krpc/blob/maste ... decoder.py

Das bekommst du nicht mal so eben hin. Und wir auch nicht.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Das Problem mit dem Protokoll , das ist es.

Werde mich mal langsam reinspielen.

Danke.
Gruss
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich kann dir nur raten deine Energie darauf zu fokussieren das krpc-Paket ans laufen zu bekommen. Das Protokoll ist ziemlich komplex, dir das selbst zu erarbeiten wird sonst lange dauern.
funkheld
User
Beiträge: 258
Registriert: Sonntag 31. Oktober 2010, 09:26

Das krPc läuft wunderbar mit Python 2.7.14 mit den dazugehörigen Programmen.

Ich kann jetzt auch serielle lesbare Daten zu einem anderen Programm übertragen mit einer virtuellen seriellen Schnittstelle mit Pyhton.

Gruss
Antworten