Seite 1 von 1

2 Server in eime Programm mit Thread ?

Verfasst: Montag 5. März 2018, 14:09
von funkheld
Wie kann ich bitte die beiden Server Port 5000 und Port 5001 am sinnvollsten laufen lassen?
Wie geht ein Thread in Python?

Danke.
Gruss

Code: Alles auswählen

import time
import krpc
import socket

TCP_IP = '127.0.0.1'
TCP_PORT = 5000
BUFFER_SIZE = 64 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
con, addr = s.accept()

TCP_IP = '127.0.0.1'
TCP_PORT = 5001
BUFFER_SIZE1 = 64 

s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s1.bind((TCP_IP, TCP_PORT))
s1.listen(1)
con1, addr1 = s1.accept()

conn = krpc.connect(name='Sub-orbital flight',
       address='127.0.0.1',
       rpc_port=1000, stream_port=1001)
	   
conn1 = krpc.connect(name='Sub-orbital flight',
       address='127.0.0.1',
       rpc_port=2000, stream_port=2001)	   
	   
vessel = conn.space_center.active_vessel
ref_frame = conn.space_center.ReferenceFrame.create_hybrid(
    position=vessel.orbit.body.reference_frame,
    rotation=vessel.surface_reference_frame)
	
vessel1 = conn1.space_center.active_vessel
ref_frame1 = conn1.space_center.ReferenceFrame.create_hybrid(
    position1=vessel.orbit.body.reference_frame1,
    rotation1=vessel.surface_reference_frame1)	
	
time.sleep(1)

while True:
	data =con.recv(BUFFER_SIZE)

	if len(data) > 3: 
		li=data.split(",")
		ti2=li.pop()
		ti1=li.pop()
		if  ti1=='trottle':
			vessel.control.throttle = float(ti2)
		if  ti1=='stage':
			vessel.control.activate_next_stage()	
		if  ti1=='heading':
			vessel.control.set_target_heading=float(ti2)
	if (data) == 'd,0':	
		data_velo=round(vessel1.flight(ref_frame).speed)
		data_alti =round(vessel1.flight().mean_altitude)	
		data_apoa =round(vessel1.orbit.apoapsis_altitude)
		data_peri =round(vesse1l.orbit.periapsis_altitude)	
		con1.send(':'+str(data_velo)+':'+str(data_alti)+':'+str(data_apoa)+':'+str(data_peri)+':')	
		
con.close()
conn.close()
con1.close()
conn1.close()

Re: 2 Server in eime Programm mit Thread ?

Verfasst: Montag 5. März 2018, 16:34
von noisefloor
Hallo,

müssen die Server interagieren? Wenn nein -> jeder Server in ein eigenes Skript, dann läuft jeder Server in einem eigenen Prozess.

Wenn sie doch interagieren müssen -> wie bzw. was ist die Interaktion?
Wie geht ein Thread in Python?
Suchbegriff für Goolge: python3 threading. Der 1. Treffer ist die offizielle Doku, der vierte Treffer ist (zumindest bei mir) die Seite "Python Module of the Week", was auch eine gut Doku ist.
Aber: Es ist nicht gesagt, dass Threading eine brauchbare bzw. sinnvolle Lösung für die ist.

Gruß, noisefloor

Re: 2 Server in eime Programm mit Thread ?

Verfasst: Montag 5. März 2018, 17:06
von funkheld
------------------------------
jeder Server in ein eigenes Skript
-----------------------------

Ist das je ein eigenes Py-programm ?

Danke.
Gruss

Re: 2 Server in eime Programm mit Thread ?

Verfasst: Montag 5. März 2018, 17:28
von noisefloor
Hallo,

ja, das ist am einfachsten.

Gruß, noisefloor

Re: 2 Server in eime Programm mit Thread ?

Verfasst: Montag 5. März 2018, 17:43
von funkheld
Ist dann auch sicher mit der Übertragung und ist leicht zu behandeln bei der Fehlersuche.

Ich glaube Fehler in einem Thread zu suchen ist nicht so leicht.

Danke.
Gruss.