Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2010, 16:36
avanes avanes вне форума
Прохожий
 
Регистрация: 14.10.2008
Сообщения: 9
Репутация: 10
По умолчанию Передача данных по TCP\IP

Всем доброго дня. Необходимо обмениватся данными с программой Delta\Digitals по протоколу TCP\IP (динственно возможный способ). При этом столкнулся с рядом проблем, если кто знает подскажите пути их решения:
1) случается что программа передаёт большой объём данных за один раз, сейчас получаю их так:
Код HTML:
TNConnector = class(TIdTCPClient) private //Пытаемся получить ответ с сервера function TrySend(Com: String):TStringStream; public constructor Create(ServerPort:Integer; AplSelf: TForm); //Посылает команду серверу, ответ возвращает в виде потока function SendRStream(Com: String):TStringStream; End; --------------------------------------------------------------- constructor TNConnector.Create(ServerPort:Integer; AplSelf: TForm); VAR SerRec:String; BEGIN inherited Create(AplSelf); Port := ServerPort; Host := 'localhost'; Connect(15); SerRec := CurrentReadBuffer; ApplicationSelf := AplSelf; ServerComPort := Port; RecvBufferSize := 1024; ReadTimeout := 30; END; //============================================================================== //Посылает команду серверу, ответ возвращает в виде потока function TNConnector.SendRStream(Com: String):TStringStream; VAR TempReply:TStringStream; TempCountTrySend:Integer; BEGIN TempCountTrySend := CountTrySend; //Попытка отослать команду серверу repeat TempReply := TrySend(Com); TempCountTrySend := TempCountTrySend - 1; until ((TempCountTrySend = 0)or(TempReply<>nil)); Sleep(WaitReply); SendRStream := TempReply; END; //============================================================================== //Пытаемся получить ответ с сервера function TNConnector.TrySend(Com: String): TStringStream; VAR TempStream:TStringStream; TempRec: String; BEGIN TRY //Посылаем команду серверу Write(Com); TempStream := TStringStream.Create(''); repeat TempRec := CurrentReadBuffer; TempStream.WriteString(TempRec); until Length(TempRec) <> 1024; TempStream.Position := 0; TrySend := TempStream; EXCEPT //Сервер занят, ни чего не возвращаем TrySend := nil; END; END;

может кто-то подскажет идею получше.

2) Подскажите как можно передать большой объём данных серверу, приведённый выше пример этого не позволяет.

3) Если запрос к TCP\IP серверу приложения совпадает с выполнением им какого либо действия зависает и серверное приложение и клиентское пока не закроеш клиентское приложени. Как этого избежать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter