![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Trerum |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 7.5.2005 Где: Столица Юга Репутация: нет Всего: нет |
Проблема следующая:в OnConnect для ClientSocket1 пишу
Сервер все принимает, но почему-то как бы не различает 1-ю строку от второй,т.е принимает в таком виде
не пойму почему.. Где-то даже читал что нужно так
но все равно не катит. |
||||||
|
|||||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 3 Всего: 74 |
попробуй #13
Добавлено @ 19:27
Сервер так не принимает. OnClientRead- так вроде... -------------------- Всем добра |
|||
|
||||
| Trerum |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 7.5.2005 Где: Столица Юга Репутация: нет Всего: нет |
у меня сервер и принимает через OnClientRead...разве можно по-другому?
P.S #13 тоже не катит |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Он так и должен принимать. Ото особенность ТСР протокола. Делай таким орбразом, каждый отправляемый пакет предваряй заголовком в котором будет содержаться размер пакета. В приблизжении это будет выглядеть примерно вот так:
Соответственно данные тебе будут приходить вот в таком виде: 14#0mtConfirmation11#0YesNoCancel, откуда ты спокойно можешь извлеч данные зная их реальный размер. |
|||
|
||||
| Archon7th |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Эта особенность Беркли сокетов, Мелкософт тут не при чем |
|||
|
||||
| unel |
|
|||
|
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: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |