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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 17:43   #1
Jetro
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 31
По умолчанию ClientSocket - передача данных одной процедурой

Столкнулся с проблемой - хочется сделать так чтобы программа не держала постоянно занятый порт, а делала следующее:
Активировала ClientSocket - передала данные - отключила ClientSocket.

Пример. Цепляю на кнопку следующий код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   abc1, abc2 : string;
begin
   Clientsocket1.Active := True;
   abc1 := edit1.Text;
   abc2 := edit2.Text;
   Clientsocket1.Socket.SendText(abc1 + ',' + abc2);
   Clientsocket1.Active := False;
end;
Но в итоге получается следующее - первое нажатие кнопки: Clientsocket активируется, цепляется к ServerSocket, но данных не передает, и не отключается. Второе нажатие кнопки: данные передались, Clientsocket отключился.
Почему все это не делается одним нажатием? Где я накосячил, чего не учел?

ЗЫ. Прошу сильно не пинать - с сокетами работать еще не приходилось, да и в знании Delphi я себя профессионалом назвать не могу.
Jetro вне форума Ответить с цитированием
Старый 16.11.2010, 16:42   #2
Jetro
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 31
По умолчанию

Всем спасибо за внимание. Разобрался сам.
Jetro вне форума Ответить с цитированием
Старый 16.11.2010, 20:24   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему все это не делается одним нажатием?
Скорее всего потому что данные посылаются до того как сокет открылся полностью.
Вот если бы ты подождал пока сокет откроется и сработает его событие OnConnect то тогда и передавай данные - получишь нормальную передачу, а ты OnConnect не дождался.

И между прочим рассказал бы как ты решил задачу - другим тоже интересно понимаешь ли...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2010, 10:35   #4
Jetro
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот если бы ты подождал пока сокет откроется и сработает его событие OnConnect то тогда и передавай данные - получишь нормальную передачу, а ты OnConnect не дождался.
Так и решил - сделал задержку. Вцепил таймер, поставил ожидать 10 мс., и если сокет стартанул, то данные ушли, если нет, то ждем еще 10 мс. и пытаемся еще раз.
Jetro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача потока. TServer\ClientSocket NikLik Работа с сетью в Delphi 9 17.05.2013 15:12
передача файла пакетами через clientsocket D_E_N Работа с сетью в Delphi 5 02.04.2011 17:25
Передача данных StringGrid через ServerSocket - ClientSocket Polotenchik Общие вопросы Delphi 4 18.03.2010 01:42
ClientSocket,ServerSocket передача данных Torvald Работа с сетью в Delphi 3 07.09.2009 03:59
Передача данных из одной таблицы в другую, при выборе одной ячейки MickMick Microsoft Office Excel 6 06.10.2008 13:57