Mehrere TCP Server über mehrere Netzwerkkarten
Verfasst: Freitag 7. Januar 2022, 15:58
Hallo,
ich habe ein Problem wo ich gerade nicht weiterkomme.
Ich habe einen Etikettendrucker der über Ethernet an einen PC angeschlossen ist und möchte über einen weiteren Rechner den Drucker über TCP ansteuern. Leider ist der Drucker nicht dazu in der Lage vom mehreren Clients Daten zu drucken. Wenn ich also vom 2ten Rechner was Sende, werden die Daten erst gedruckt wenn der erste Rechner die TCP Verbindung unterbrochen hat. Es ist nicht möglich am ersten PC oder am Drucker irgendwelche Einstellungen zu ändern. Sowohl der 1te PC als auch der Drucken müssen so bleiben wie sie sind.
Meine erste Idee war es die TCP Signale mit dem 2ten Rechner abzufangen, die Seqenz und ACK nummer zu übernehmen und eine RAW Nachricht mit meinen Daten zu senden. Ich bin mir aber nicht sicher wie sich dann der 1te PC verhalten wird wenn der dann versucht Nachrichten zu senden. Die Kommunikation vom 1ten PC und dem Drucker sollte nicht gestört werden.
Meine 2te Idee ist das aktuelle Problem. Ich würde vor dem Drucker einen Raspberry PI anschießen und den als "Server Drucker" verwenden ohne dass im Netzwerk was geändert werden muss.
PC--->>Raspberry---->>>Drucker
Damit keine Einstellungen am 1ten PC geändert werden müssen, muss der Raspberry einen TCP Server mit der gleichen IP wie der Drucker haben und dann über eine weitere Netzwerkkarte als Client mit dem Drucker verbinden und die TCP Nachrichten dann 1:1 weiterleiten. Mit einer weiteren Netzwerkkarte kann ich dann mit beliebiger IP einen weiteren TCP Server erstellen und über den Client versenden. So hat der Drucker nur einen Client und ich kann mehrere PCs benutzen um Nachrichten an den Drucker zu senden.
Ich verwende einen Linux Rechner zum programmieren. Ich kann einen Server erstellen und einen Client aber wenn ich zuerst den Server mit IP 1 erstelle und dann versuche mit dem Client 1 zu verbinden, verbindet er sich mit sich selbst, und wenn ich erst den Client verbinde und dann den Server, erstellt er mir keinen Server. Es kommt auch ab und zu vor, dass ich keine Verbindung als Client aufbauen kann weil das Socket auf einer anderen Netzwerkkarte erstellt wird, wenn ich dann die "Server Netzwerkkarte" deaktiviere, dann funktioniert es wieder.
Kann ich in Python definieren, auf welches Interface ich ein Socket erstelle? Bis jetzt habe ich nur zeug zum Thema gefunden wo auf einen Server mehrere Clients verbinden aber ich brauche mehrere Server mit unterschiedlicher IP und ein Client.
Oder gibts eine elegantere Lösung für meine Situation?
Vielen Dank.
ich habe ein Problem wo ich gerade nicht weiterkomme.
Ich habe einen Etikettendrucker der über Ethernet an einen PC angeschlossen ist und möchte über einen weiteren Rechner den Drucker über TCP ansteuern. Leider ist der Drucker nicht dazu in der Lage vom mehreren Clients Daten zu drucken. Wenn ich also vom 2ten Rechner was Sende, werden die Daten erst gedruckt wenn der erste Rechner die TCP Verbindung unterbrochen hat. Es ist nicht möglich am ersten PC oder am Drucker irgendwelche Einstellungen zu ändern. Sowohl der 1te PC als auch der Drucken müssen so bleiben wie sie sind.
Meine erste Idee war es die TCP Signale mit dem 2ten Rechner abzufangen, die Seqenz und ACK nummer zu übernehmen und eine RAW Nachricht mit meinen Daten zu senden. Ich bin mir aber nicht sicher wie sich dann der 1te PC verhalten wird wenn der dann versucht Nachrichten zu senden. Die Kommunikation vom 1ten PC und dem Drucker sollte nicht gestört werden.
Meine 2te Idee ist das aktuelle Problem. Ich würde vor dem Drucker einen Raspberry PI anschießen und den als "Server Drucker" verwenden ohne dass im Netzwerk was geändert werden muss.
PC--->>Raspberry---->>>Drucker
Damit keine Einstellungen am 1ten PC geändert werden müssen, muss der Raspberry einen TCP Server mit der gleichen IP wie der Drucker haben und dann über eine weitere Netzwerkkarte als Client mit dem Drucker verbinden und die TCP Nachrichten dann 1:1 weiterleiten. Mit einer weiteren Netzwerkkarte kann ich dann mit beliebiger IP einen weiteren TCP Server erstellen und über den Client versenden. So hat der Drucker nur einen Client und ich kann mehrere PCs benutzen um Nachrichten an den Drucker zu senden.
Ich verwende einen Linux Rechner zum programmieren. Ich kann einen Server erstellen und einen Client aber wenn ich zuerst den Server mit IP 1 erstelle und dann versuche mit dem Client 1 zu verbinden, verbindet er sich mit sich selbst, und wenn ich erst den Client verbinde und dann den Server, erstellt er mir keinen Server. Es kommt auch ab und zu vor, dass ich keine Verbindung als Client aufbauen kann weil das Socket auf einer anderen Netzwerkkarte erstellt wird, wenn ich dann die "Server Netzwerkkarte" deaktiviere, dann funktioniert es wieder.
Kann ich in Python definieren, auf welches Interface ich ein Socket erstelle? Bis jetzt habe ich nur zeug zum Thema gefunden wo auf einen Server mehrere Clients verbinden aber ich brauche mehrere Server mit unterschiedlicher IP und ein Client.
Oder gibts eine elegantere Lösung für meine Situation?
Vielen Dank.