Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сокеты Windows


BJValentine ©   (2003-06-17 16:28:00) 

С клиента послал серверу запрос, он прислал ответ. Это всё хорошо, но срабатывает только один раз. Может я делаю какую-то типичную ошибку? Я только сегодня начал работать с сокетами, в книге весьма поверхностно описаны сокеты, помогите, пожалуйста, кто знает.


Digitman   (2003-06-18 16:29:00) [1]


> BJValentine


разумеется !!)

ты должен в событии OnRead() вычерпать хоть сколько-нибудь из буфера приема !

иначе событие OnRead вновь не возникнет)


BJValentine   (2003-06-18 16:12:00) [2]

Спасибо, что заставил подумать. Всё получилось. Я просто не знал, что обзательно надо прочитать (ReceiveText), прежде чем отправить.


Digitman   (2003-06-18 15:07:00) [3]


> BJValentine



> Серверу в данном случае


Причем здесь сервер ????? или клиент ????
Это "побоку", как ты говоришь)... речь идет о ПЕРЕДАТЧИКЕ сообщения !! Неверная работа с транспортной логикой передатчика и вызывает проблемы)
После установления соединения для него (установленного соединения) нет понятий "сервер" и "клиент", а есть в каждый момент времени "сторона, передающая сообщение" и "сторона, принимающая сообщение".

Я, извини, уже мозоль заработал, растолковывая по десять раз на дню, что здесь как да почему))

Ну вот же, практически рядом с твоей идет ветка с такой же проблемой. Неужели трудно почитать-вникнуть ?

http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1054813102&n=4


BJValentine   (2003-06-18 14:49:00) [4]

Серверу в данном случае побоку, что к нему прийдёт, главное-заставить его послать текст. Какая разница: есть анализ или нет?


Digitman   (2003-06-18 14:44:00) [5]


> BJValentine



> сервак никак не реагирует


а где аназиз результата вызова ФУНКЦИИ (!!!!!!!!!!!!!!!) SendText() ?


BJValentine   (2003-06-18 13:46:00) [6]

To Manfred:

Вот должно выдавать месаги по нажатию кнопки, но выдаёт только когда нажимаю первый раз, остальные разы - ничего не происходит, точнее

procedure TForm1.Button1Click(Sender: TObject);
begin
CS1.Socket.SendText("ddd");
end;

выполняется, а сервак никак не реагирует!


Digitman   (2003-06-18 08:33:00) [7]


> BJValentine


какой операции ?


Manfred   (2003-06-17 22:42:00) [8]

Ты правильно поставил вопрос? Судя по приведённому коду, сколько раз жмакнешь пимпу - столько и получишь мессаджей.


BJValentine   (2003-06-17 18:18:00) [9]

Ожидал многократное выполнение этой операции


Digitman   (2003-06-17 17:42:00) [10]

ну так а что ты ожидал ?


BJValentine   (2003-06-17 17:31:00) [11]

На клиенте нажимаю кнопку:

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 16:54:00) [12]


> срабатывает только один раз


что "срабатывает один раз" ? конкретно ?


BJValentine   (2003-06-17 16:38:00) [13]

Клиент:

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;


Spawn   (2003-06-17 16:36:00) [14]

А где код?


Наверх

Титульная страница Поиск, карта сайта Написать письмо