Hallo Forum,
Habe eine Netzwerkfähigen Kartenleser geschrieben(wird zum anmelden an eine Programm benötigt). Es werden 3 Befehle über das Netzwerk gelöst (Login, Logout, synchronisieren).
synchronisieren : Verschickt 3 Dateien(Benutzer und Berechtigungen) über das Netzwerk.
Login und Logout : Netzwerkfähiges Account Modul
Problem:
Das synchronisieren und Login/Logout, funktionieren unabhängig voneinander wunderbar, nur wenn sie zusammen genutzt werden treten Fehler auf.
Die Synchronisation soll nur möglich sein wenn sich ein Superuser einlogt.
Logt sich eine Benutzer ein werden diese Information an die anderen Rechner im Netzwerk weitgeleitet.
Also:
Logt sich der Superuser ein und will darauf die Daten synchronisieren funktioniert das nicht.
Muss ich vielleicht 2 Server Threads erzeugen?
Delphi-Quellcode:
procedure TfrmMain.tcpServerExecute(AThread: TIdPeerThread);
Var sClientMsg, Name, Phat : String;
FileReceiver : TFileReceiver;
begin
try
sClientMsg := AThread.Connection.ReadLn(#$A,3500);
FileReceiver := TFileReceiver.Create(AThread, sClientMsg);
Name := AThread.Connection.ReadLn;
Phat := AThread.Connection.ReadLn;
if sClientMsg = 'login' then begin
lbClients.Items.Add(sClientMsg+Name+' '+Phat) ;
DoLogin(Name, Phat);
end;
if sClientMsg = 'logout' then begin
lbClients.Items.Add(sClientMsg +Name+' '+Phat) ;
DoLogout(Name, Phat);
end;
try
if FileReceiver.ServerMsgOK then
FileReceiver.Start;
finally
FileReceiver.Free;
end;
except
AThread.Connection.Disconnect;
end;
end;