AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket-Fehler #10054
Thema durchsuchen
Ansicht
Themen-Optionen

Socket-Fehler #10054

Ein Thema von xZise · begonnen am 10. Sep 2007 · letzter Beitrag vom 25. Sep 2007
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Socket-Fehler #10054

  Alt 10. Sep 2007, 10:29
Ich bekomme, wenn ich eine Nachricht an eine Ip sende einen Socketfehler #10054, obwohl keine der beiden Seiten die Verbindung trennt.

Ich benutze die UdpSockUtil-Komponente, wessen Demo problemlos funktioniert.
Meine Frage ist nun, welchen Code ihr braucht um zu sagen, was ich falsch mache.
Delphi-Quellcode:
procedure TfrmMain.Send(AType: TMessageType; ARecipient: string; AIndex : Integer);
var
  Data : array of Byte;
  msg : TMessageData;
  i: Integer;
  kill : string;
  messageOkay : Boolean;
begin
  SetLength(Data, REQUEST_HEADER_LENGTH);
  messageOkay := true;
  case AType of
    mtShutDown: begin
      Data[0] := 1;
    end;
    mtLogOut: begin
      Data[0] := 2;
    end;
    mtDelete: begin
      Data[0] := 3;
    end;
    mtMessage: begin
      if frmDialog.Execute = mrOk then
      begin
        msg := frmDialog.GetMessageData;
        // Laenge der Nachricht erstellen
        // Es müssen zusätzlich noch 3 addiert werden, da es 2 Trenner gibt und ein Iconindex
        SetLength(Data, Length(msg.title + msg.text) + 3 + REQUEST_HEADER_LENGTH);
        Data[0] := 4;
        for i := 1 to Length(msg.title) do
          Data[i + REQUEST_HEADER_LENGTH - 1] := Ord(msg.title[i]);
        Data[Length(msg.title) + REQUEST_HEADER_LENGTH] := 0;
        for i := 1 to Length(msg.text) do
          Data[Length(msg.title) + i + REQUEST_HEADER_LENGTH] := Ord(msg.text[i]);
        Data[Length(msg.title + msg.text) + 2 + REQUEST_HEADER_LENGTH] := 0;
        Data[High(Data)] := msg.icon;
      end else
        messageOkay := false;
    end;
    mtKill: begin
      kill := 'IcyTower';

      if InputQuery('Kill', 'Bitte geben sie den Titel des Programms an, der beendet werden soll.', kill) then
      begin
        // Laenge der Nachricht erstellen
        SetLength(Data, Length(kill) + REQUEST_HEADER_LENGTH);
        Data[0] := 5;
        for i := 1 to Length(kill) do
          Data[i + REQUEST_HEADER_LENGTH - 1] := Ord(kill[i]);
      end else
        messageOkay := false;
    end;
  end;
  if messageOkay then
  begin
    if ARecipient = 'r50then
    begin
      for i := 0 to High(R50_NAMES) do
      begin
        udpSocket.RemoteHost := R50_NAMES[i];
        udpSocket.SendBuf(Data[0], Length(Data));
      end;
    end else if ARecipient = 'foyerthen
    begin
      for i := 0 to High(R50_NAMES) do
      begin
        udpSocket.RemoteHost := 'Foyer' + IntToStr(i);
        udpSocket.SendBuf(Data[0], Length(Data));
      end;
    end else
    begin
      udpSocket.RemoteHost := ARecipient;
      udpSocket.SendBuf(Data[0], Length(Data));
    end;
  end;
end;
Das ist der Code, welche die Nachricht sendet.
ARecipent ist "192.168.1.191" (Ping erfolgreich), AType ist entweder 1 oder 2 (beides geht nicht)...
Dies tritt auch mit den anderen PCs auf.

Ich kommuniziere dabei über Prot 2007 zu einen Service.

Könnt ihr mir sagen was ich falsch mache xD

Kann es auch sein, dass ich den anderen Computer (also der mit den Service) herunterfahren/abmelden will?
(Naja ist Windows 2000... da funktioniert das nicht so ganz)

MfG
xZise

PS: Wenn ich eine Nachricht übertrage funktioniert es seltsamerweise

PPS: Wäre freundlich, wenn es jemand bis 11:10 sieht ^^ dann ist die Freistunde vorbei xD
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Socket-Fehler #10054

  Alt 10. Sep 2007, 15:49
Zitat von xZise:
Ich bekomme, wenn ich eine Nachricht an eine Ip sende einen Socketfehler #10054, obwohl keine der beiden Seiten die Verbindung trennt.

< stuff deleted >

PS: Wenn ich eine Nachricht übertrage funktioniert es seltsamerweise :gruebel:
Hallo,

wo besteht denn der Unterschied zwischen Nachricht an eine IP senden und eine Nachricht übertragen?
Und ist UDP nicht ein verbindungsloses Protokoll und
es wird zwischen Client und Server keine Verbindung aufgebaut wie bei TCP?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: Socket-Fehler #10054

  Alt 10. Sep 2007, 15:53
#10054 heißt, dass du derb was vermasselt hast und eine Verbindung entweder nie aufgebaut wurde oder sofort wieder wegen einem Fehler wieder geschlossen wurde.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Socket-Fehler #10054

  Alt 10. Sep 2007, 16:13
Zitat von Klaus01:
wo besteht denn der Unterschied zwischen Nachricht an eine IP senden und eine Nachricht übertragen?
Genau, dass ist ja das seltsame... die Befehle "Shutdown" und "Abmelden" erzeugen den Fehler, aber eine MessageBox übertragen erzeugt kein Fehler.

Zitat von Klaus01:
Und ist UDP nicht ein verbindungsloses Protokoll und
es wird zwischen Client und Server keine Verbindung aufgebaut wie bei TCP?
Jap? Und weiter?

Zitat von Nils_13:
#10054 heißt, dass du derb was vermasselt hast und eine Verbindung entweder nie aufgebaut wurde oder sofort wieder wegen einem Fehler wieder geschlossen wurde.
Hmmm... Okay... dann gucken wir mal, was den die Verbindung sofort wieder schließt... das ist ehm. moment... ich finds nicht... (und es ist kein Allgemeines Problem wie z.B. Firewall).
Und warum sollte keine Verbindung aufgebaut werden?

Kann es sein (wie im 1. Post schon vermutet), es damit zusammenhängt dass ich Exit_Win beim Service aufrufe?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Socket-Fehler #10054

  Alt 10. Sep 2007, 16:29
Zitat von "xZise:
Kann es sein (wie im 1. Post schon vermutet), es damit zusammenhängt dass ich Exit_Win beim Service aufrufe?
Nun, wenn Du den Rechner auf dem der Server sitzt während der Kommunikation herunterfährst werden auch die UDP Ports geschlossen/bzw. der Server-Dienst abgeschaltet. Und dann dürfte keine Kommunikation mehr möglich sein und zu diesem
Fehler führen.

Ich finde es sehr schwer Deinen Ausführungen zu folgen wenn man Dein Programm nicht kennt.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Socket-Fehler #10054

  Alt 10. Sep 2007, 18:52
Okay Dann werde ich wohl nicht drum herumkommen
Ich werde mal den Code veröffentlichen... Es gibt 2 Komponenten (Service & "(Admin)Tool").

Ein paar Hinweise: 1. Das Tool benutzt neuerdings (diese Version nicht) IP Adressen anstelle der Computernamen.
2. Der Service sollte (falls ihr ihn installiert), neukompiliert werden
Angehängte Dateien
Dateityp: rar admintool_442.rar (1,22 MB, 4x aufgerufen)
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Socket-Fehler #10054

  Alt 15. Sep 2007, 15:01
So, ich habevor 5 Tagen den Code online gestellt Und der Fehler ist immernoch vorhanden.
Abgesehen davon, dass der Service Windows 2000 eh nicht korrekt runterfährt (Der Dienst läuft weiter => Nachrichten werden angezeigt)
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Socket-Fehler #10054

  Alt 25. Sep 2007, 12:26
Ich will ja nicht nerven, aber es kann doch nicht sein, dass niemand eine Antwort auf dieses Problem hat?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz