hallo,<br>
neue woche neues problem;o)<br>
ich will von mehreren clients dateien zu einem server übertragen. basiert auf dem beispiel von andreas. klappt auch ganz gut.
nun will ich aber in den dateinamen den namen des clients einbauen, von dem die datei kam. also merke ich mir diese mit
<pre>
constructor TClientThread.Create(CreateSuspended: Boolean; ASocket: TServerClientWinSocket);
var
dummy: string;
begin
inherited;
FreeOnTerminate := true;
<b>mRemoteHostName := ASocket.RemoteHost;</b>
end;
</pre>
dabei tritt folgendes problem auf:<br>
beim ersten ausführen von TClientThread.ClientExecute; ist die variable noch nicht belegt - ich vermute, das der prozeß den anderen überholt?
bei allen folgenden aufrufen ist die variable korrekt belegt. da aber ein zweiter client nicht immer einen neuen thread abspaltet (warum eigentlich nicht?) belegt dieser die variable nicht neu.<br>
um dieses zu lösen habe ich am ende von TClientThread.ClientExecute; ein Destroy() eingefügt - soll doch der nächste client, der was will, einen neuen thread erzeugen (und damit die variable korrekt initialisieren).<br>
da aber der erste versuch immer scheitert, klappt das auch nicht;o(
daher die frage: wie kann ich, wenn bei beginn der übertragung ein thread erzeugt wird, noch schnell den remotehost erhalten, bevor daten gespeichert werden?
danke,<br>
Sven
PS: Windows NT4.0, Delphi 5E
neue woche neues problem;o)<br>
ich will von mehreren clients dateien zu einem server übertragen. basiert auf dem beispiel von andreas. klappt auch ganz gut.
nun will ich aber in den dateinamen den namen des clients einbauen, von dem die datei kam. also merke ich mir diese mit
<pre>
constructor TClientThread.Create(CreateSuspended: Boolean; ASocket: TServerClientWinSocket);
var
dummy: string;
begin
inherited;
FreeOnTerminate := true;
<b>mRemoteHostName := ASocket.RemoteHost;</b>
end;
</pre>
dabei tritt folgendes problem auf:<br>
beim ersten ausführen von TClientThread.ClientExecute; ist die variable noch nicht belegt - ich vermute, das der prozeß den anderen überholt?
bei allen folgenden aufrufen ist die variable korrekt belegt. da aber ein zweiter client nicht immer einen neuen thread abspaltet (warum eigentlich nicht?) belegt dieser die variable nicht neu.<br>
um dieses zu lösen habe ich am ende von TClientThread.ClientExecute; ein Destroy() eingefügt - soll doch der nächste client, der was will, einen neuen thread erzeugen (und damit die variable korrekt initialisieren).<br>
da aber der erste versuch immer scheitert, klappt das auch nicht;o(
daher die frage: wie kann ich, wenn bei beginn der übertragung ein thread erzeugt wird, noch schnell den remotehost erhalten, bevor daten gespeichert werden?
danke,<br>
Sven
PS: Windows NT4.0, Delphi 5E
Comment