Netspirit писал(а):
но не отключает уже подключенных клиентовТы это серверу расскажи, он-то передать клиенту ничего не может, только принимает. Одностороннее соединение какое-то
------------ Дoбавленo в 23.47:
Netspirit, ИМХО. Вот так правильно должно быть, но код построен так, что больше экземпляр не создашь. Изначально неправильно реализован алгоритм работы.
procedure THITCP_Server._work_doClose;
begin
// Sock.Close;
Sock.Destroy;
end;
Смотри, как это реализовано в TCP_ServerEx
procedure THITCP_ServerEx.Close;
var i:integer;
begin
if Assigned(FSock) then begin
for i:=0 to FSock.Count-1 do
FSock.Connections[i].Close;
FSock.Destroy;
FSock := nil;
end;
end;
Я так подумал, но чтобы ничего не переделывать и оба сервера работали похожим образом, то можно сделать вот так
procedure THITCP_Server._work_doClose;
begin
Sock.DisconnectClients;
Sock.Close;
end;