|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
[Help] Посылаем большой текст TClientSocket/TServerSocket
посылаю большой текст с клиента к серверу..
Код:
clientsocket1.socket.sendtext('DATA#' + memo1.text); размер текста 60 кб. текст принемается обычным способом но не полностю.. пробовал посылать частично.. Код:
var s,buf: string; i,max : integer; begin s := memo1.text; max := Round(Length(s) / 2056) + 1; // 2056 = 2kb for i := 1 to max do begin buf := 'DATA#' + copy(s,1,2056); delete(s,1,length(buf)); clientsocket1.socket.sendtext(buf); end; end; Код:
var s : string; begin s:= socket.receivetext; if copy(s,1,length('data#')) = 'data#' then memo1.lines.add(s); end; тож самое.. не полностю.. заранее спосибо за помощ. простите за грамотические ошибки. |
#2
|
||||
|
||||
Переведи в массив байт, проверь.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
потому что твой текст размером 60Кб разбивается на пакеты, к примеру по 8Кб. а у тебя добавляется только первый пакет:
Код:
if copy(s,1,length('data#')) = 'data#' then memo1.lines.add(s); Пишу программы за еду. __________________ |
#4
|
||||
|
||||
Заведи флаги, "начало потока" и "конец потока".
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Потому что отправляются только первые 8кб, остальные 52 кб по твоей вине коту под хвост.
|
#6
|
||||
|
||||
Во-первых ты когда отправляешь текст, то добавляешь слово 'DATA' большими буквами:
Код:
buf := 'DATA#' + copy(s,1,2056); Код:
if copy(s,1,length('data#')) = 'data#' then memo1.lines.add(s); Во-вторых в этом коде: Код:
buf := 'DATA#' + copy(s,1,2056); delete(s,1,length(buf)); Ну и замечание по поводу строки: Код:
max := Round(Length(s) / 2056) + 1; // 2056 = 2kb Код:
max := (Length(s) + 2055) div 2056; // 2056 = 2kb И какая у тебя версия Delphi? |
#7
|
|||
|
|||
poli-smen
я ето на прямую тут написал, не копировал и поетому такие ошибки.. ети ошибки всё сделано Цитата:
mss знаю и поетому и отправляю по 2 кб.. Цитата:
знаю и поетому и отправляю по 2 кб.. но.. в етом примере не должно работать? Код:
var s : string; begin s:= socket.receivetext; if copy(s,1,length('data#')) = 'DATA#' then memo1.lines.add(s); end; |
#8
|
||||
|
||||
Цитата:
Просто перечитай внимательно посты выше, там все объяснили. Если ты думаешь, что текст не полностью принимается, напиши так: Код:
s:= socket.receivetext; if(Length(s) <> 0) then memo1.lines.add(s); Помогаю за Спасибо Последний раз редактировалось v1s2222, 20.08.2012 в 20:14. |
#9
|
|||
|
|||
> знаю и поетому и отправляю по 2 кб..
ГДЕ ты отправляешь по 2 кб ? Ни малейшего намека в твоем коде на это ! |
#10
|
||||
|
||||
значится еще раз:
проблема не в отправке, проблема в приеме! Пишу программы за еду. __________________ |