Вверх ↑
Этот топик читают: Гость
Ответов: 3851
Рейтинг: 159
#1: 2007-06-15 15:33:16 ЛС | профиль | цитата
Теперь и не знаю, можно ли сюда писать по пакету Delphi...
В общем, вот схемка: code_1559.txt а теперь вопрос: как так получается, что отсылаются два сообщения, а принимается одно, с текстом обоих?
Или это только у меня так
карма: 0
начавший
0
файлы: 1code_1559.txt [964B] [211]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2007-06-15 15:39:27 ЛС | профиль | цитата
Андрей., получается это так, что сначала данные копятся в восьмикилобайтном буфере TCP протокола а потом улетают в сеть(либо наоборот улетают как попало, а потом копятся в приемном буфере) и в таком виде принимаются компонентом. Ошибкой это не является.
карма: 27
0
Ответов: 3851
Рейтинг: 159
#3: 2007-06-15 16:04:35 ЛС | профиль | цитата
Dilma писал(а):
что сначала данные копятся

Не понял - это же транспорт, я думал там сообщения передаются. Типа юзер сказал отослать - значя он его подготовил к отправке, а уж как там TCP будет пыхтеть - это его проблемы (на то он и TCP). И пока на приёмной стороне все пакеты не соберёт - низачто не признается, что у него уже что-то получено, ну и так далее по тексту
карма: 0
начавший
0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2007-06-15 16:45:34 ЛС | профиль | цитата
Андрей. писал(а):
Не понял - это же транспорт, я думал там сообщения передаются

TCP - транспортный протокол высокого уровня с установкой соединения, работающий поверх IP и обеспечивающий гарантированную передачу данных от источника к приемнику(все данные дойдут и в правильном порядке). Больше ничего этот протокол обещать не может.
карма: 27
0
Ответов: 3851
Рейтинг: 159
#5: 2007-06-15 17:01:37 ЛС | профиль | цитата
Dilma писал(а):
Больше ничего этот протокол обещать не может
Жааль.
Тогда ещё вопрос:
Вот такая схемка code_1561.txt работает. Но у меня сомнение - будет ли это надёжно на всех машинах и виндах, или взятые мною 200ms канают ( ) только у меня?
карма: 0
начавший
0
файлы: 1code_1561.txt [1KB] [240]
Ответов: 893
Рейтинг: 18
#6: 2007-06-15 17:01:44 ЛС | профиль | цитата
Dilma, А как зделать так чтоб сервер или клиен распознавал какой тип информации он должен передать ?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2007-06-15 17:24:36 ЛС | профиль | цитата
Андрей., не так делать надо. Если передается только строковая информация то можно например заканчивать передачу строки посылкой некоего спец символа и на стороне сервера накапливать все данные пока не пришел такой символ.

Byuik, очевидно отсылать передаваемый тип данных как один из параметров. Скажем в HTML протоколе любая передача данных выглядит так:
Content-Length: <общая длина передаваемых данных>
Content-Type: <тип данных>

<собственно данные>


В нестроковых протоколах существуют свои форматы пакетов вида:
1 байт - тип данных в пакете
4 байта - размер данных
N байт - собственно данные

карма: 27
0
Ответов: 893
Рейтинг: 18
#8: 2007-06-15 17:56:56 ЛС | профиль | цитата
Dilma, Тоесть получается что компоненты клиент и сервер TCP способны распознать тип данных ?
Естли так то это расширяет возможности , чего и требуется.

Андрей., Я когдато тоже столкнулся с приведённой выше проблемой, решенье пришло почти сразу code_1562.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_1562.txt [1.3KB] [147]
Ответов: 3851
Рейтинг: 159
#9: 2007-06-15 18:10:55 ЛС | профиль | цитата
Dilma, я понял, спасибо.
Byuik, в моей проге передавать нужно больше 2-х сообщений, с обработкой - придётся делать буфер и всё такое. Спасибо.



ЗЫ Dilma, в схеме Byuik-а code_1562.txt если нажать кнопку 2 раза, то проц грузится доверху - я писАл об этой проблеме ... просто напоминаю
карма: 0
начавший
0
Ответов: 893
Рейтинг: 18
#10: 2007-06-15 18:23:03 ЛС | профиль | цитата

Андрей., а что ты хотел тыже пытаешся создать два одинаковых сокета Гыгыгыгы.....
Яж надеялся что ты поймёш схему и не станеш дважды нажимать...
code_1563.txt

Теперь можеш нажимать сколько угодно
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_1563.txt [1.4KB] [166]
Ответов: 893
Рейтинг: 18
#11: 2007-06-15 18:41:17 ЛС | профиль | цитата
Вот исправил
Add(Button,5624076,245,364)
{
Left=75
Top=40
Caption="Старт "
link(onClick,1057468:doEvent1,[])
}
Add(StrPart,11640816,427,287)
{
Char="#"
link(onSplit,4742488:doText,[(523,293)(523,258)])
link(onPart,16351953:doText,[(523,300)(523,300)])
}
Add(Hub,1057468,294,364)
{
OutCount=4
link(onEvent1,15690494:doOpen,[(352,370)(352,293)])
link(onEvent2,2305008:doOpen,[(408,377)(408,461)])
link(onEvent3,4760412:doString,[(376,384)(376,475)])
link(onEvent4,2305008:doClose,[(408,391)(408,468)])
}
Add(Memory,20515,476,378)
{
Default=String(Вроде да)
}
Add(FormatStr,4760412,427,469)
{
Mask="%1#%2"
link(onFString,2305008:doSend,[(475,475)(475,475)])
link(Str1,2707387:Value,[(433,440)(433,440)])
link(Str2,20515:Value,[(440,436)(482,436)])
}
Add(TCP_Client,2305008,490,455)
{
Port=888
IP="127.0.0.1"
}
Add(TCP_Server,15690494,378,287)
{
Port=888
link(onRead,11640816:doSplit,[])
link(onDisconnect,15690494:doClose,[(420,307)(420,277)(368,277)(368,300)])
}
Add(Label,4742488,588,252)
{
Left=155
Top=45
Width=73
Height=17
Caption="Второй канал"
}
Add(Label,16351953,588,294)
{
Left=155
Top=20
Width=77
Height=17
Caption="Первый канал"
}
Add(Memory,2707387,427,378)
{
Default=String(Получается ?)
}
Чтото непонятное с кодировками на форуме творится
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 4code_1564.txt [1.2KB] [181], code_1565.txt [1.2KB] [163], code_1566.txt [1.2KB] [176], code_1567.txt [1.2KB] [157]
Ответов: 3851
Рейтинг: 159
#12: 2007-06-15 19:54:20 ЛС | профиль | цитата
Byuik писал(а):
а что ты хотел тыже пытаешся создать два одинаковых сокета Гыгыгыгы.....

Именно так, и вместо onError оно мне проц напрягает
карма: 0
начавший
0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)