AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Drucken im Netzwerk mit TidLpr: "Socket already in use"
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken im Netzwerk mit TidLpr: "Socket already in use"

Ein Thema von skyobserver · begonnen am 5. Jan 2010 · letzter Beitrag vom 9. Mär 2010
 
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

Re: Drucken im Netzwerk mit TidLpr: "Socket already in

  Alt 5. Jan 2010, 15:50
Hallo skyobserver,

Zitat von skyobserver:
Ich suche nach einem besseren Rad: Es ist sehr praktisch, wenn man einen Druckjob direkt auf
eine IP-Adresse schicken kann, ohne den Drucker auf einem Server oder einer Workstation
installieren zu müssen. Wenn in einer Firma defekte Rechner getauscht werden müssen ist
immer darauf zu achten das alle Einstellungen bzw. installierte Drucker beim neuen Rechner
auch vorhanden sind. Es ist sehr aufwändig Ersatz-PCs bei gelegentlichen Änderungen ständig
synchron zu halten - vor allem wenn der Betrieb 24 Stunden produziert und man nicht mal 10
Minuten Zeit bekommt um die Festplatte zu clonen.
Wenn man Bereitschaftsdienst hat ist man außerdem sehr dankbar, wenn der Schichtelektriker
Nachts um 04:00 mal eben selbst den PC umstöpselt und man weiterschlafen kann. Ich muß wohl
nicht erwähnen wie "toll" es ist um die Zeit in die Firma zu fahren zu müssen um einen PC zu
tauschen...
Ich sage mal diplomatisch, dass ist ungünstige Prozessoptimierung

Probier mal folgendes (geht nur, wenn der Rechner nur 1 IP hat):
Delphi-Quellcode:
uses
  ..., IdStack; // IdStack Unit einbinden
...

...
procedure PrintLabel;
begin
  idlpr.BoundIP := GStack.LocalAddress; // holt sich die lokale IP
  idlpr.Host := '192.168.0.100';
  idlpr.Connect;
  if idlpr.Connected then
  begin
    idlpr.PrintFile('C:\Print.tmp');
    idlpr.Disconnect;
    // idlpr.DisconnectSocket; // nicht nötig, gibt es in neueren Indys auch nicht mehr
  end
  else ShowMessage('Fehler beim Versenden des Printfiles');
end;
Du könntest dann noch beim Connect mit einer kleinen Schleife und Timeout dem Port etwas Zeit geben, frei zu werden. Das Problem mit 10048 (WSAADDRINUSE) ist leider MS bekannt und as-designed, da muß so eine Lösung herhalten.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz