Модератор: Модераторы
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: Я успешно определяю разрыв коннекта только средствами синапса и без всяких "костылей"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1