Модератор: Модераторы
procedure TClientIPPort.Open(IP: String; Port: Cardinal);
var
i: Cardinal;
begin
fClientSocket.Bind(fLocalIP, IntToStr(Port+1));
fClientSocket.Connect(IP, IntToStr(Port));
if fClientSocket.LastError <> 0 then
begin
if Assigned(OnError) then
OnError(Self, fClientSocket.LastError, fClientSocket.LastErrorDesc);
Exit;
end;
if Assigned(OnConnect) then
OnConnect(Self);
end;
procedure TClientReadThread.Execute;
var
ReadBuf: array of Byte;
i, ReadCount: Integer;
begin
while not Terminated do
begin
//если можно читать из сокета
if fClientSocket.CanRead(0) then
begin
//кол-во данных, доступных для чтения
ReadCount:= fClientSocket.WaitingData;
if ReadCount > 0 then
begin
SetLength(ReadBuf, ReadCount);
for i:= Low(ReadBuf) to High(ReadBuf) do
ReadBuf[i]:= fClientSocket.RecvByte(500);
.........................
end;
Sleep(1);
end
else
begin
if fClientSocket.LastError <> 0 then
begin
if Assigned(OnError) then
OnError(Self, fClientSocket.LastError, fClientSocket.LastErrorDesc);
if Assigned(OnDisconnect) then
OnDisconnect(Self);
Exit;
end;
end;
end;
end;
*vmr писал(а):PS: Я успешно определяю разрыв коннекта только средствами синапса и без всяких "костылей"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2