Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2012, 23:43   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Почему то не работает TClientSocket (RAD2010)

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

Код:
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
Pcrepair вне форума Ответить с цитированием
Старый 26.09.2012, 00:06   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Событие привязано к кнопке? Я так понял, что в первой процедуре вообще ничего не выполняеться. Верно?
Delphi_ProGer вне форума Ответить с цитированием
Старый 26.09.2012, 08:13   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

верно понял.
взято из букварей, должно работать но где хитрая заковыка
Pcrepair вне форума Ответить с цитированием
Старый 26.09.2012, 09:34   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
где хитрая заковыка
"Хитрая заковыка" - в значении свойства по умолчанию ClientType = ctNonBlocking.
xoodoo вне форума Ответить с цитированием
Старый 26.09.2012, 14:22   #5
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

да это все тоже менялось и так и этак
тут что то с РАД2010, под Д7 все работает. где то что то нужно то ли активировать то ли установить
так что это вопрос к тем кто работает в РАД2010
Pcrepair вне форума Ответить с цитированием
Старый 26.09.2012, 15:27   #6
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
и этак
И как конкретно ты изменял "так" на "этак" ?)
xoodoo вне форума Ответить с цитированием
Старый 26.09.2012, 19:27   #7
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
И как конкретно ты изменял "так" на "этак" ?)
канкретна менял режим на блокирующий и неблокирующий, выбор там небольшой или или одно из трех
Pcrepair вне форума Ответить с цитированием
Старый 26.09.2012, 21:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Пробовал в режиме трассировки. доходит до Button1Click - и ничего.
А ты зря проверяешь коннект там же. Для него есть событие OnConnect. Там и нужно обрабатывать если связь установлена.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.09.2012, 22:14   #9
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
Для него есть событие OnConnect
При "этак" это событие, равно как и все прочие, никогда не возникнет.
Оно возникнет только при "так", т.е. при ctNonBlocking.
А ctNonBlocking - это как правило то что "взято из букварей".
А то что "взято из букварей", работать не обязано.

Последний раз редактировалось xoodoo; 26.09.2012 в 22:17.
xoodoo вне форума Ответить с цитированием
Старый 17.10.2012, 02:46   #10
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

все получилось по простому:
Код:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ClientSocket1.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   ClientSocket1.Create(nil);
end;
Pcrepair вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив Tclientsocket. Как обробатывать события для массива Tclientsocket `ов. Denutrror Работа с сетью в Delphi 4 04.06.2012 10:42
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
почему интеренет на Xp не работает, а на семерке работает Lenura Windows 18 04.10.2010 12:04
RAD2010+технология DataSnap _zz_ БД в Delphi 0 25.05.2010 10:42
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46