![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Приветствую всех и каждого.
Перейду сразу к делу. Использую два компонента: TClientSocket и TServerSocket. С TServerSocket проблем нет, корректно поднимаю сервер с указанным пользователем портом (стараюсь не использовать зарезервированные, использую 1111). Затем подключаюсь к серверу через TClientSocket. Вот тут как раз возникает странная для меня вещица. Опишу по шагам, что есть и что не нравится. 1 шаг: указываю TClientSocket заведомо неверный адрес и порт - ругается, как ему и положено. 2 шаг: указываю верные адрес и порт - не коннектиться и ругается (почему понятно, но так не должно быть). 3 шаг: просто еще раз пытаюсь коннектиться по верным адрес и порту - коннектиться так, как и должен был во втором шаге, но уже без каких-либо ошибок. Меня как раз этот второй шаг и напрягает - ошибка понятная, но непонятно, с какого дуба она тут. Прошу помочь разобраться (не просто избавиться от ошибки, а объяснить причину ее возникновения и правильное ее лечение). Заранее всем спасибо! |
|
#2
|
||||
|
||||
|
здесь все с первого раза работает?
http://data.cod.ru/67333 |
|
#3
|
|||
|
|||
|
Ты меня не понял. Прочитай внимательнее, когда именно ошибка возникает. Ибо даже в моем примере все корректно работает, если сразу же вести правильные данные. И вся соль в real-time.
Прикрепляю сам проект, чтобы было легче все понять и просмотреть |
|
#4
|
||||
|
||||
|
почему выкладывать исходник с TMyConnection, TMyTable, TMyTable, TMyQuery если ни у кого этого нет? теперь понятно зачем я свой выложил?
по поводу проблемы могу посоветовать 100% рабочий вариант: Код:
procedure TForm1.ConnectToBtnClick(Sender: TObject);
begin
if ClientSocket1.Active then
begin
ClientSocket1.Active := False;
ConnectToBtn.Caption := 'Соединиться'
end
else
begin
ClientSocket1.Free;
ClientSocket1:=TClientSocket.Create(Self);
ClientSocket1.OnConnect:=ClientSocket1Connect;
ClientSocket1.OnDisconnect:=ClientSocket1Disconnect;
ClientSocket1.OnError:=ClientSocket1Error;
ClientSocket1.Host := HostNameEdit.Text;
ClientSocket1.Port := StrToInt(PortToEdit.Text);
// соединяемся с сервером
ClientSocket1.Active := True
end
end; |
|
#5
|
|||
|
|||
|
Во-первых, если посмотреть внимательнее, то компоненты MyDac пока даже не использовались. Они закинуты на будущее.
Во-вторых, второй твой ответ помог. Я тоже думал, что нужно рефрешнуть компонент, но не знал, как правильно это делается. Спасибо большое за помощь! |
|
#6
|
||||
|
||||
|
Код:
ClientSocket1.Free;
ClientSocket1:=TClientSocket.Create(Self); |