2 Server in eime Programm mit Thread ?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
funkheld
User
Beiträge: 224
Registriert: Sonntag 31. Oktober 2010, 09:26

Montag 5. März 2018, 14:09

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()
Benutzeravatar
noisefloor
User
Beiträge: 2531
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Montag 5. März 2018, 16:34

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
funkheld
User
Beiträge: 224
Registriert: Sonntag 31. Oktober 2010, 09:26

Montag 5. März 2018, 17:06

------------------------------
jeder Server in ein eigenes Skript
-----------------------------

Ist das je ein eigenes Py-programm ?

Danke.
Gruss
Benutzeravatar
noisefloor
User
Beiträge: 2531
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Montag 5. März 2018, 17:28

Hallo,

ja, das ist am einfachsten.

Gruß, noisefloor
funkheld
User
Beiträge: 224
Registriert: Sonntag 31. Oktober 2010, 09:26

Montag 5. März 2018, 17:43

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.
Antworten