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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принятие сообщений ServerSocket-ом 
:(
    Опции темы
Trerum
Дата 14.5.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема следующая:в OnConnect для ClientSocket1 пишу
Код

ClientSocket1.Socket.SendText('mtConfirmation');
ClientSocket1.Socket.SendText('YesNoCancel');

Сервер все принимает, но почему-то как бы не различает 1-ю строку от второй,т.е принимает в таком виде
Код

ClientSocket1.Socket.SendText('mtConfirmationYesNoCancel')

не пойму почему..
Где-то даже читал что нужно так
Код

ClientSocket1.Socket.SendText('mtConfirmation'+#10);
ClientSocket1.Socket.SendText('YesNoCancel');

но все равно не катит.
PM MAIL ICQ   Вверх
SoWa
Дата 14.5.2005, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



попробуй #13
Добавлено @ 19:27
Цитата
ClientSocket1.Socket.SendText('mtConfirmationYesNoCancel')

Сервер так не принимает. OnClientRead- так вроде...


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Trerum
Дата 14.5.2005, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



у меня сервер и принимает через OnClientRead...разве можно по-другому?
P.S #13 тоже не катит
PM MAIL ICQ   Вверх
Rouse_
Дата 16.5.2005, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 29



Он так и должен принимать. Ото особенность ТСР протокола. Делай таким орбразом, каждый отправляемый пакет предваряй заголовком в котором будет содержаться размер пакета. В приблизжении это будет выглядеть примерно вот так:
Код

ClientSocket1.Socket.SendText('14' + #0 + 'mtConfirmation');
ClientSocket1.Socket.SendText('11' + #0 + 'YesNoCancel');

Соответственно данные тебе будут приходить вот в таком виде:
14#0mtConfirmation11#0YesNoCancel, откуда ты спокойно можешь извлеч данные зная их реальный размер.


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Archon7th
Дата 24.5.2005, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

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



я сейчас долбаю похожую проблему ... мозги уже вскипают ...

... тебе между sendText нужно разрывать и снова открывать соединение или открывать одновременные ... проблем немерено, но типа как это было задумано Микрософтом, оно так и должно быть ...

for i := 0 to ServerSocket1.Socket.ActiveConnections do
ServerSocket1.socket.connections[i].sendtext(s);

... но метод Rouse_ гораздо проще
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
Rouse_
Дата 24.5.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 29



Цитата(Archon7th @ 24.5.2005, 12:21)
... тебе между sendText нужно разрывать и снова открывать соединение или открывать одновременные ... проблем немерено, но типа как это было задумано Микрософтом, оно так и должно быть ...

Эта особенность Беркли сокетов, Мелкософт тут не при чем smile


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
unel
Дата 1.6.2005, 06:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











вы чего, ребят?
можно короче, так

ClientSocket1.Socket.SendText('mtConfirmation'+#0+'YesNoCancel');
а на сервере поступить таким образом

s=Server.socket.ReceiveText();

s1=copy(s,1,pos(#0,s)-1);
s2=copy(s,pos(#0,s)+1,length(s));

то есть мы как бы приняли целиклвую строку, а потом, с помощю символа-разделителя #0 копируем первую половинку (до позиции этого символа) в s1
а вторую (после позиции этого симвлола) - в s2
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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