Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Сколько раз возникнет событие TServerSocket.ClientRead?   Найти похожие ветки 

 
Calm ©   (2003-10-10 16:21) [0]

В коде клиентского приложения должен выполняться код типа такого:
...
ClientSocket.SendText(str1);
ClientSocket.SendText(str2);
ClientSocket.SendText(str3);
...

Я предполагал, что на сервере три раза возникнет событие чтение. Однако по непонятной мне причине получаю одно "слипшееся" сообщение с принятым текстом str1+str2+str3.
Более всего непонятно то, что глюк наблюдается, когда клиентские программы запущены на нескольких компах.

В чем может быть причина проблемы?
Может я что-то делаю не так? Опыт работы с сокетами у меня маловат :(

Буду признателен за советы :)


 
calm ©   (2003-10-10 16:24) [1]

Второй день разбираюсь, не могу понять в чем дело :(

От безысходности пробовал делать так:
ClientSocket.SendText(str1);
sleep(200);
ClientSocket.SendText(str2);
sleep(200);
ClientSocket.SendText(str3);

Не помогает!


 
calm ©   (2003-10-10 16:27) [2]

Быть может беда в том, что я использую на сервере stNonBlocking-сокет, а нужно stThreadBlocking?
Тогда мне нужно использовать в событиях чтения от клиента thread-safe code. Это как? Создавать критическую секцию?


 
крот   (2003-10-10 16:36) [3]

Придется сделать так, при каждом получении строки, сервер будет посылать уведомление клиенту, что он уже получил очередную строку и только тогда клиент будет посылать следующую строку.


 
Verg ©   (2003-10-10 16:36) [4]

Все нормально. В TCP/IP - как разбивать поток на "блоки" - это его (TCP/IP) личное дело. Ты мог бы получить и шесть OnRead-ов и два.


 
calm ©   (2003-10-10 16:42) [5]


> Все нормально

:-)

> при каждом получении строки, сервер будет посылать уведомление
> клиенту, что он уже получил

Ох... И по-проще нет способа? :((


 
крот   (2003-10-10 16:55) [6]


> Ох... И по-проще нет способа? :((


Нет :) Все равно придется этот огород городить. А если будет большая посылка, а TCP/IP передает данные пакетами не больше 8кБ, как ты будешь определять начало и конец посылки? Нужен еше один уровень над TCP/IP.


 
Verg ©   (2003-10-10 16:58) [7]


> calm © (10.10.03 16:42) [5]
>
> > Все нормально
>
> :-)


А чего смешного?

Я ж тебе говорю - никакой это не "глюк". Все так и должно быть.
Кто тебе сказал, что количество принятых OnRead должно равняться количеству Send-ов ???


 
calm ©   (2003-10-10 16:59) [8]


> А чего смешного?
>
> Я ж тебе говорю - никакой это не "глюк". Все так и должно
> быть.

Да все в порядке, я тебя понял.
Просто я не ожидал, что так правильно.


 
calm ©   (2003-10-10 17:02) [9]


> Нет :) Все равно придется этот огород городить

Хреново.
Так не хочется верить, что это действительно так :))
Впрочем, хоть надежда и не умерла, пойду вскапывать грядки своего огорода :)


 
Digitman ©   (2003-10-10 17:10) [10]


> calm


ничего "хренового".
куча протоколов, которыми ты пользуешься каждый день (включая протол http, при помощи которого ты сейчас это читаешь), используют TCP/IP


 
calm ©   (2003-10-10 17:15) [11]

Вот и мне хотелось бы чего-нибудь поиспользовать, а не огород городить.

P.S. Не сочтите за ленивого, хочется всего и сразу :)


 
Reindeer Moss Eater ©   (2003-10-10 17:20) [12]

Хочется принимать отдельные команды?
Надо внедрять протокол обмена.

Отправил - жди ответа.
Пришел ответ - делай дальше


 
calm ©   (2003-10-10 17:22) [13]

ok, большое спасибо всем.


 
Basilio ©   (2003-10-11 13:13) [14]

А в шестых дельфях есть Indy? В пятых не было, в седьмых есть...
Там в TIdTCPServer есть CommandHandlers - очень мощная вещь.
Мне даже удалось договорить D5::TClientSocket с Kylix3/D7::TIdTCPServer ;)
Сервер должен был работать под linux/win (без напряга сделалось под D7/Kylix3), а клиент должен был быть написан на D5.


 
Verg ©   (2003-10-11 14:08) [15]


> А в шестых дельфях есть Indy?


Есть.



Страницы: 1 вся ветка

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
14-52377
Думкин
2003-11-24 05:41
2003.12.16
С днем рождения! 24 ноября.


14-52382
Knight
2003-11-21 22:19
2003.12.16
Прикол, для тех кто под линейкой WinNT...


1-52233
ramdy
2003-12-03 17:19
2003.12.16
Плоский pagecontrol


6-52329
Pavels
2003-10-22 10:16
2003.12.16
dns/soa/mx/ns - помогите с инфой/доками


1-52140
MAC
2003-12-04 02:11
2003.12.16
Как удалить из файла несколько строк которые есть в другом файл ?