Тема: ClientSocket
Показать сообщение отдельно
  #3  
Старый 02.03.2013, 13:49
Dzman Dzman вне форума
Прохожий
 
Регистрация: 29.01.2013
Сообщения: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
синхронным (блокируемым) сокетом
заработало через TcpClient, спасибо.

Чтобы получать сообщения надо использовать компонент TcpServer?
пчму-то не хочет сообщения принимать, если есть какой-нибудь пример, с радостью разберу код.


Вот так работает отлично.
Код:
procedure TForm1.OnOff (ip,pass,onORoff: String);
begin
     TC1.RemoteHost:= ip;
     TC1.RemotePort:='2424';
     TC1.Active:=True;
     TC1.Sendln('$KE,PSW,SET,'+pass+#13+#10);
     if(onORoff = 'on')
     then begin
     TC1.Sendln('$KE,WR,1,0'+#13+#10);
     Memo1.Lines.Add('on');
     end
     else begin
     TC1.Sendln('$KE,WR,1,1'+#13+#10);
     Memo1.Lines.Add('off');
     end;
     sleep(500);
     TC1.Active:=False;
end;


Вопрос: Как уменьшить время, которое синхронный сокет блокирует программу в тех случаях, когда не может подключиться?

оказывается и ClientSocket можно было в синхронный режим перевести, тупанул чутка. Но проблема с замораживанием интерфейса осталась, как можно её решить? Немного полазив нашел компонент TidAntiFreeze, который размораживает все компоненты, которые не относятся к системе Indy, но тогда и сокет надо из системы Indy брать.

Получается никак не сделать нормально, без размазывания кода по разным процедурам?
Ответить с цитированием