Форум: "Сети";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизСокеты Windows Найти похожие ветки
← →
BJValentine (2003-06-17 16:28) [0]С клиента послал серверу запрос, он прислал ответ. Это всё хорошо, но срабатывает только один раз. Может я делаю какую-то типичную ошибку? Я только сегодня начал работать с сокетами, в книге весьма поверхностно описаны сокеты, помогите, пожалуйста, кто знает.
← →
Spawn (2003-06-17 16:36) [1]А где код?
← →
BJValentine (2003-06-17 16:38) [2]Клиент:
procedure TForm1.CS1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;
Сервер:
procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
( Edit1.Text) Клиент:
procedure TForm1.CS1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;
Сервер:
procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText(Edit1.Text);
end;
← →
Digitman (2003-06-17 16:54) [3]
> срабатывает только один раз
что "срабатывает один раз" ? конкретно ?
← →
BJValentine (2003-06-17 17:31) [4]На клиенте нажимаю кнопку:
procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;
На сервере выполняется:
procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
( Edit1.Text) На клиенте нажимаю кнопку:
procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;
На сервере выполняется:
procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText(Edit1.Text);
end;
После чего на клиенте выполняется:
procedure TForm1.CS1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);
end;
← →
Digitman (2003-06-17 17:42) [5]ну так а что ты ожидал ?
← →
BJValentine (2003-06-17 18:18) [6]Ожидал многократное выполнение этой операции
← →
Manfred (2003-06-17 22:42) [7]Ты правильно поставил вопрос? Судя по приведённому коду, сколько раз жмакнешь пимпу - столько и получишь мессаджей.
← →
Digitman (2003-06-18 08:33) [8]
> BJValentine
какой операции ?
← →
BJValentine (2003-06-18 13:46) [9]To Manfred:
Вот должно выдавать месаги по нажатию кнопки, но выдаёт только когда нажимаю первый раз, остальные разы - ничего не происходит, точнее
procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;
выполняется, а сервак никак не реагирует!
← →
Digitman (2003-06-18 14:44) [10]
> BJValentine
> сервак никак не реагирует
а где аназиз результата вызова ФУНКЦИИ (!!!!!!!!!!!!!!!) SendText() ?
← →
BJValentine (2003-06-18 14:49) [11]Серверу в данном случае побоку, что к нему прийдёт, главное-заставить его послать текст. Какая разница: есть анализ или нет?
← →
Digitman (2003-06-18 15:07) [12]
> BJValentine
> Серверу в данном случае
Причем здесь сервер ????? или клиент ????
Это "побоку", как ты говоришь)... речь идет о ПЕРЕДАТЧИКЕ сообщения !! Неверная работа с транспортной логикой передатчика и вызывает проблемы)
После установления соединения для него (установленного соединения) нет понятий "сервер" и "клиент", а есть в каждый момент времени "сторона, передающая сообщение" и "сторона, принимающая сообщение".
Я, извини, уже мозоль заработал, растолковывая по десять раз на дню, что здесь как да почему))
Ну вот же, практически рядом с твоей идет ветка с такой же проблемой. Неужели трудно почитать-вникнуть ?
http://delphimaster.net/view/6-1054813102/
← →
BJValentine (2003-06-18 16:12) [13]Спасибо, что заставил подумать. Всё получилось. Я просто не знал, что обзательно надо прочитать (ReceiveText), прежде чем отправить.
← →
Digitman (2003-06-18 16:29) [14]
> BJValentine
разумеется !!)
ты должен в событии OnRead() вычерпать хоть сколько-нибудь из буфера приема !
иначе событие OnRead вновь не возникнет)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c