![]() |
Socket-Fehler #10054
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:
Das ist der Code, welche die Nachricht sendet.
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 = 'r50' then 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 = 'foyer' then 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; 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 :gruebel: PPS: Wäre freundlich, wenn es jemand bis 11:10 sieht ^^ dann ist die Freistunde vorbei xD |
Re: Socket-Fehler #10054
Zitat:
wo besteht denn der Unterschied zwischen Nachricht an eine IP senden und eine Nachricht übertragen? Und ist ![]() es wird zwischen Client und Server keine Verbindung aufgebaut wie bei TCP? Grüße Klaus |
Re: Socket-Fehler #10054
#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.
|
Re: Socket-Fehler #10054
Zitat:
Zitat:
Zitat:
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? |
Re: Socket-Fehler #10054
Zitat:
Fehler führen. Ich finde es sehr schwer Deinen Ausführungen zu folgen wenn man Dein Programm nicht kennt. Grüße Klaus |
Re: Socket-Fehler #10054
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: Socket-Fehler #10054
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) |
Re: Socket-Fehler #10054
Ich will ja nicht nerven, aber es kann doch nicht sein, dass niemand eine Antwort auf dieses Problem hat?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:30 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