Показать сообщение отдельно
  #1  
Старый 31.12.2012, 11:16
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Несколько ClientSocket в одном приложении

Всех с наступающим Новым Годом.
Делаю приложение с использованием ClientSocket. Я уже задавал вопрос по работе с этим устройством http://www.delphisources.ru/forum/sh...ghlight=Jerome, там разобрался все работает прекрасно. Сейчас у меня в "конструкторе" установленны два устройства Jerome, соединены через хаб с компом. При подключении все нормально, но через какое то время то один Jerom, то другой отваливаются.
В логе
Код:
31.12.2012	10:24:48	Команда на подключение к хосту
31.12.2012	10:24:48	Отправлен запрос авторизации-$KE,PSW,SET
31.12.2012	10:24:48	Получен ответ на авторизацию 
31.12.2012	10:24:48	Команда на подключение к хосту
31.12.2012	10:24:48	Отправлен запрос авторизации-$KE,PSW,SET
31.12.2012	10:24:48	Получен ответ на авторизацию 
31.12.2012	10:24:49	Подключение к хосту 192.168.10.51 установлено
31.12.2012	10:24:49	Подключение к хосту 192.168.10.52 установлено
31.12.2012	10:25:52	Ошибка №10053
31.12.2012	10:25:52	Подключение к хосту 192.168.10.52 потерянно
31.12.2012	10:25:56	Ошибка №10053
31.12.2012	10:25:58	Ошибка №10053

Соответсвенно выдается ошибка, что соединение закрыто.
Так у меня происходит подключение устройства.
Код:
procedure TForm1.Connection1;///Подключение первого хоста
 begin
  if Form1.N14.Checked = true
   then
 logs('Команда на подключение к хосту');
 CS1.Port := StrToInt(LabeledEdit2.text);///Порт
 CS1.Address :=LabeledEdit1.text;///IP адрес
 CS1.Active :=True;///Открываем порт
Sleep(100);
 CS1.Socket.SendText('$KE,PSW,SET,Jerome'#13#10);///Отправляем пароль
 logs('Отправлен запрос авторизации-$KE,PSW,SET');
 Memo1.Text:=s;
 logs('Получен ответ на авторизацию '+(s)+'');
end;

procedure TForm1.CS1Read(Sender: TObject;Socket: TCustomWinSocket);
begin
  s := Socket.ReceiveText;
end;

procedure TForm1.Connection2;///Подключение второго хоста
 begin
  if Form1.N14.Checked = true
   then
 logs('Команда на подключение к хосту');
 CS2.Port := StrToInt(LabeledEdit4.text);
 CS2.Address :=LabeledEdit3.text;
 CS2.Active :=True;
Sleep(100);
 CS2.Socket.SendText('$KE,PSW,SET,Jerome'#13#10);ю
 logs('Отправлен запрос авторизации-$KE,PSW,SET');
 Memo2.Text:=s1;
 logs('Получен ответ на авторизацию '+(s1)+'');
end;

procedure TForm1.CS2Read(Sender: TObject;Socket: TCustomWinSocket);
begin
  s1:= Socket.ReceiveText;
end;

На включение или отключение команды отсылаю так.

Код:
CS1.Socket.SendText('$KE,WR,1,1'#13#10);///Вкл. канала на первом хосте
CS1.Socket.SendText('$KE,WR,1,0'#13#10);///Откл. канала на первом хосте


CS2.Socket.SendText('$KE,WR,1,1'#13#10);///Второй хост
Можете подсказать почему происходит отключение устройства?

P.S. Если подключать по одному устройству, то проблем с отключением нет. Работает без ошибок. Если включить оба устройства в хаб, то практически сразу ошибка.
Ответить с цитированием