Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.04.28;
Скачать: CL | DM;

Вниз

Почему то не работает TClientSocket (RAD2010)   Найти похожие ветки 

 
Pcrepair ©   (2012-09-25 23:37) [0]

Добрый день. решил попробовать сокеты.
такой код:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Host := "127.0.0.1";  (*тут веб-сервер*)
  ClientSocket1.Port := 80;
  ClientSocket1.Open;
  (*специально для проверки дописал вот это*)
  if ClientSocket1.Active = True then
  Label1.Caption:="IT OPEN"; (*лейбл показывает что сокет не запустился, не активный*)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientSocket1.close;
end;

Пробовал в режиме трассировки. доходит до Button1Click - и ничего. а вот Button2Click нормально проходит трассировку
пробовал далее  ClientSocket1.Socket.SendText("GET /index.php HTTP/1.1"#13#10); по ClientSocket1Connect и далее Memo1.Lines.Add(Socket.ReceiveText), но конечно ничего не вышло, поскольку метод OPEN не работает?

Вопрос: может что не так в синтксисе? все примеры из Д7


 
Плохиш ©   (2012-09-26 00:12) [1]

У TClientSocket есть парный ему класс.


 
Германн ©   (2012-09-26 01:55) [2]


> Пробовал в режиме трассировки. доходит до Button1Click -
>  и ничего. а вот Button2Click нормально проходит трассировку

Переведи.


 
Pcrepair ©   (2012-09-26 08:10) [3]

нажимаем на Ф7, идет компиляция программы. одно, другое и так до появления формы с кнопками. нажимаем батон1 - ничего. нажимаем батон2 - как положено переходить к обработчику и далее.


 
Сергей М. ©   (2012-09-26 09:24) [4]

Это сокеты виноваты.
Если бы не сокеты, то нажимаем батон1 и сразу видим "чего".
Не пробовал бы ты их - кислые они.


> может что не так в синтксисе?


Ты же уже до трассировки дошел, какой к лешему синтаксис ?
Трассировка не может быть осуществлена, если код не скомпилирован в принципе по причине, например, "не так в синтксисе".


 
Dimka Maslov ©   (2012-09-26 10:09) [5]

Остаётся теперь только задаться вопросом, а есть ли на компьютере с адресом 127.0.0.1 активный сервер, слушающий порт 80. А есть ли вообще... Впрочем об этом ужа давно всё сказано.


 
Pcrepair ©   (2012-09-26 14:20) [6]

да уж есть и сервер и порт, не глупее тебя, будь уверен
а че ты там сказал? да еще и все


 
Сергей М. ©   (2012-09-26 15:36) [7]

> лейбл показывает что сокет не запустился, не активный

И правильно показывает.
Сокет-то неблокирующий..
И "запустится" он не раньше события OnConnect.
Или не "запустится", но не раньше события OnError.


 
Pcrepair ©   (2012-09-26 19:19) [8]

откуда такая информация, что цокет неблокирующий? и в том и в другом случае результат одинаковый

кстати по поводу события OnConnect...
можно выставить какой угодно ИП-адрес а оно все равно выдает что OnConnect есть. а к чему оно подключается когда такого ИП-адреса в сети просто нет?


 
Сергей М. ©   (2012-09-26 22:00) [9]


> откуда такая информация, что цокет неблокирующий?


Оттуда.
Блокирующий сокет при неуспешной попытке подключения возбудит исключение, и до строки if ClientSocket1.Active = True then выполнение программы попросту не дойдет.


> оно все равно выдает что OnConnect есть


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


 
Pcrepair ©   (2012-09-27 09:04) [10]

ну есть и другие варианты, на месте никто не стоит

implementation

{$R *.dfm}

procedure TForm1.btn2Click(Sender: TObject);
begin
 ClientSocket1.Socket.SendText(mmoSendText.Text);       //посылаем сообщение
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
ClientSocket1.Port := StrToInt(edtPort.text);        //устанавливаем порт
ClientSocket1.Address := edtIP.text;                 //IP адресс сервера  если на одном компе можно просто 192.168.1.2
//ClientSocket1.Host:=edtIP.text;  (*только для имени далее ДНС получает адрес*)
ClientSocket1.Active :=True;                         //Коннектимся
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Active :=False;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Form1.Caption := "Подключились к " + edtIP.text;      //Если подключились покажем это, ВОТ ТУТ показывает что подключилось к какому угодно IP в том числе несуществующему
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
form1.Caption := "Связь разорвана";                  //Связь разорвана =(
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
ShowMessage("Ошибка №" +  IntToStr(ErrorCode));    //Возникла ошибка
ErrorCode :=0;                                     //Забъем на нее
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 mmoMsg.Lines.Add("[Server]::" + Socket.ReceiveText); //Нам сообщенице
end;

end.


 
Сергей М. ©   (2012-09-27 09:42) [11]

В условиях полной неадаптированности пакета этих компонентов к юникоду работать они как им положено не будут.


 
avtomk@narod.ru   (2012-10-17 02:41) [12]

Удалено модератором
Примечание: не надо писать чушь


 
Сергей М. ©   (2012-10-17 10:15) [13]


> ClientSocket1.Create(nil);


Мдя ..
Сложно выдумать бред бредовей чем реинициализация уже существующего экземпляра TClientSocket)


> ClientSocket1.Free;


Это тоже порадовало - TClientSocket по всей вероятности уже лежит на форме, это означает что форма при создании сама автоматически создаст и инициализирует объект, соответственно при разрушении сама же автоматически его уничтожит.



Страницы: 1 вся ветка

Текущий архив: 2013.04.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.005 c
15-1356769502
Undertacker
2012-12-29 12:25
2013.04.28
Как прочитать сохраненные файлы Оперы-мини?


15-1356381002
Юрий
2012-12-25 00:30
2013.04.28
С днем рождения ! 25 декабря 2012 вторник


2-1348601853
Pcrepair
2012-09-25 23:37
2013.04.28
Почему то не работает TClientSocket (RAD2010)


15-1356521593
brother
2012-12-26 15:33
2013.04.28
порезать файл XML


15-1356642898
ННН
2012-12-28 01:14
2013.04.28
Подскажите программу для перехвата DEBUG-сообщений.