Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Вниз

Разделение данных на пакеты   Найти похожие ветки 

 
amg   (2002-03-07 04:00) [0]

В таком варианте, образуется один пакет.
ServerSocket1.Socket.Connections[0].SendBuf(vBuffer^, vI2);
ServerSocket1.Socket.Connections[0].SendBuf(vBuffer^, vI2);
Как можно сделать, чтобы эти данные были в разных пакетах?


 
panov   (2002-03-07 08:15) [1]

Никак, только обрабатывать такую ситуацию самому, вставляя в передаваемые данные, например, свои разделители.

Это свойство TCP/IP протокола.


 
Digitman   (2002-03-07 09:44) [2]

TServerSocket использует поточный режим работы гнезд (SOCK_STREAM), поэтому ни каких "пакетах" не может быть речи. Задача логического разделения данных в непрерывном потоке на отдельные информационные блоки при таком режиме возлагается на прикладное ПО.


 
amg   (2002-03-07 13:00) [3]

Можно. Если написать
ServerSocket1.Socket.Connections[0].SendBuf(vBuffer^, vI2);
ShowMessage("1");
ServerSocket1.Socket.Connections[0].SendBuf(vBuffer^, vI2);
Только как появляется сообщение, первый пакет уходит, и затем формируется второй. Но это очень не удобно, постоянно смотреть на эти сообщения. Нужно вместо ShowMessage, найти оптимальное решение. Вот я и спрашиваю об этом решении.


 
Digitman   (2002-03-07 16:31) [4]

А зачем серверу этот самый ShowMessage() ?? Это принимающей стороне (в дан.случае - клиенту) нужно отличать логические блоки информации, следующие один за другим в сплошном потоке инф-ции, отправляемой передающей стороной (в дан.случае - сервером). А, значит, каждому блоку информации в потоке непрерывно передаваемых блоков должен предшествовать некий определенный блок-префикс (это и входит в понятие "протокола информационного обмена"). Принимающая сторона должна в этом случае прочитать из потока префикс (ожидаемого размера и содержания, по соглашениям с передающей стороной), и, если таковой принят и корректен, следом прочитать собственно ожидаемый следом блок данных. В противном случае возникает ситуация т.н. "логической рассинхронизации" (несоответствие протоколу инф.обмена) и соединение д.б. разорвано по иниц-ве принимающей стороны, т.к. дальнейшие попытки принять корректную инф-цию практически бессмысленны.


 
amg   (2002-03-07 16:46) [5]

Вот именно, так мне и нужно. То есть, в начале каждого пакета идет ниформация(блок-префикс). ShowMessage() в частности я привел как пример, что эти две стоки можно скинуть в разные потоки (а Вы говорите нет!). И мне не вместо ShowMessage() нужно что-то поставить другое, для простого разъединения пакетов.


 
digitman   (2002-03-07 17:09) [6]

причем здесь ShowMessage() ?? И поток - всего один ! Откуда у тебя их больше одного-то взялось ?


with ServerSocket1.Socket.Connections[0] do begin
SendBuf(Prefix, PrefixSize); //префикс
SendBuf(vBuffer^, vI2); //след. за ним блок
SendBuf(Prefix, PrefixSize); //префикс
SendBuf(vBuffer^, vI2); //след. за ним блок
end;



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

Форум: "Сети";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
14-64795
Pete
2002-04-10 12:08
2002.05.20
Почта.... :)


1-64700
Sten
2002-05-06 14:02
2002.05.20
проблемы с печатью


6-64764
Viksoft
2002-03-07 17:17
2002.05.20
Как узнать IP адрес Proxy сервера в локальной сети?


1-64688
robbit
2002-05-03 10:05
2002.05.20
Наследник TForm


3-64526
ilya_lu
2002-04-23 13:16
2002.05.20
DCOM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский