Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SendText в ClientSocket 
V
    Опции темы
ASGDeveloper
Дата 16.10.2006, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Пытаюсь отправлять данные между ClientSocket и ServerSocket. По ходу дела данные от сервера клиенту отправляются (то есть на событие onRead данные в сокете есть). А при отправке данных от клиента серверу данные не доходят.
PM MAIL   Вверх
Matematik
Дата 16.10.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Чем тебе помочь?
PM MAIL WWW ICQ   Вверх
ASGDeveloper
Дата 16.10.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Matematik @  16.10.2006,  10:06 Найти цитируемый пост)
Чем тебе помочь? 

Советом. Или кодом. Или ответом на вопрос, почему это происходит.
PM MAIL   Вверх
Matematik
Дата 16.10.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Ошибка в программе, точно тебе говорю.
 smile

Добавлено @ 10:13 
Уже давно на форуме, а писать сообщение еще не научился.
Код покажи.
PM MAIL WWW ICQ   Вверх
ASGDeveloper
Дата 16.10.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Matematik @  16.10.2006,  10:10 Найти цитируемый пост)
Уже давно на форуме, а писать сообщение еще не научился.
Код покажи. 

А чего там писать? Берем ClientSocket и ServerSocket. Серверу ставим любой незанятый порт (например 65000). Ставим ему Active в true. Дальше клиенту ставим Host в localhost и такой же порт (65000). Дальше:
Код

Client.Open;
Client.Socket.SendText('Test!');
Client.Close;

А у сервера на событие onClientWrite что-то вроде:
Код

ShowMessage(Socket.ReceivedText);


Добавлено @ 10:27 
Сервер на событие реагирует, но текст сообщения пустой.  smile 
PM MAIL   Вверх
Matematik
Дата 16.10.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Справку почитал бы для чего OnClientWrite нужен. Данные приходят по onRead  и у клиента и у сервера.
 smile 
Хотя я сам вначале давно не сразу разобрался что для чего
 smile

Добавлено @ 10:33 
Код

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('Client -'+Socket.ReceiveText);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('SErver -'+Socket.ReceiveText);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Socket.SendText('сервер дурак')
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ServerSocket1.Socket.Connections[0].SendText('сам дурак')
end;


Добавлено @ 10:36 
Не забывай что ClientSocket и ServerSocket по-умолчанию работают в ассинхроном режиме, и код
Код

Client.Open;
Client.Socket.SendText('Test!');
Client.Close;

будет работать не правильно
PM MAIL WWW ICQ   Вверх
ASGDeveloper
Дата 16.10.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(Matematik @  16.10.2006,  10:33 Найти цитируемый пост)
Хотя я сам вначале давно не сразу разобрался что для чего

Вот за это спасибо!  smile 


Цитата(Matematik @  16.10.2006,  10:33 Найти цитируемый пост)
Не забывай что ClientSocket и ServerSocket по-умолчанию работают в ассинхроном режиме

Это я помню  smile 
Код

Client.Open;
while not Client.Active do Application.ProcessMessages;
Client.Socket.SendText('Test!');
while Client.Socket.ReceiveLength = 0 do Application.ProcessMessages;
ShowMessage(Client.Socket.ReceiveText);
Client.Close;

PM MAIL   Вверх
Демо
Дата 16.10.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(ASGDeveloper @  16.10.2006,  11:27 Найти цитируемый пост)
Client.Open;
while not Client.Active do Application.ProcessMessages;
Client.Socket.SendText('Test!');
while Client.Socket.ReceiveLength = 0 do Application.ProcessMessages;
ShowMessage(Client.Socket.ReceiveText);
Client.Close;


жуть.

Код

procedure TfMainClient.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  s: String;
begin
  s := '';
  while Socket.ReceiveLength>0 do s := s + Socket.ReceiveText;
  Memo1.Lines.Add(s);
  if (Length(s)>1) and (Copy(s,1,2)='OK') then ClientSocket1.CLose;
end;





Это сообщение отредактировал(а) Демо - 16.10.2006, 23:55


--------------------
    
PM MAIL ICQ Skype   Вверх
HappyLife
Дата 25.7.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



Цитата(Matematik @  16.10.2006,  10:33 Найти цитируемый пост)
Не забывай что ClientSocket и ServerSocket по-умолчанию работают в ассинхроном режиме, и код

Как сделать чтобы они работали не в асинхронном режиме?
И зачем он вообще нужен?

PM MAIL   Вверх
Демо
Дата 25.7.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(HappyLife @  25.7.2007,  11:18 Найти цитируемый пост)
Как сделать чтобы они работали не в асинхронном режиме?И зачем он вообще нужен?


Это неправильный термин.
Не асинхронный, а блокирующий и не блокирующий.



--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.