Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2017, 11:05   #11
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
AContext.Connection.IOHandler.Write (Pointer(S1)^, SizeOf(s1), 1);
Код:
[dcc32 Error] Unit1.pas(380): E2250 There is no overloaded version of 'Write' that can be called with these arguments
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 23.01.2017, 11:15   #12
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Пост #9 посмотри подправил кое что
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.01.2017, 11:20   #13
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Pos('<policy-file-request/>', s) <> 0
неплохо решил)
а с остальным все по прежнему
пост #10 видел?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 23.01.2017, 11:22   #14
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Сейчас Xe поставлю проверю, отпишусь
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.01.2017, 12:02   #15
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

у ВАС ОТВЕТ '<policy-file-request/> приходит в одной строке или еще что то в этой строке приходит?
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.01.2017, 12:07   #16
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

запрос: <policy-file-request/>
ответ: <?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>
VirusN13

Последний раз редактировалось ArtGrek; 23.01.2017 в 12:09.
ArtGrek вне форума Ответить с цитированием
Старый 23.01.2017, 12:09   #17
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Так попробуйте не нужно использовать TStringStream он ждет поток данных а у вас одна строка
Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  s1: AnsiString;
begin
   S1:= AContext.Connection.IOHandler.ReadLn();
  if Pos('<policy-file-request/>', S1) <> 0 then
 begin
    s1 := '<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>';
    AContext.Connection.SendCmd(S1);
    AContext.Connection.Disconnect;
  end;
end;
Да и вообще эти индейские компоненты иногда странно ведут себя, я стараюсь использовать WinSock

Последний раз редактировалось Aliens_wolfs; 23.01.2017 в 12:25.
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.01.2017, 12:27   #18
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

тоже не помогло
во так сервер принимает, но не отвечает
Socket Error # 10038 Socket operation on non-socket.
Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  s, s1: AnsiString;
begin
  AContext.Connection.IOHandler.ReadStream(MemStream, -1, True);
  s := MemStream.DataString;
  if Pos('<policy-file-request/>', s) <> 0 then
  begin
    s1 := '<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>';
    AContext.Binding.SendTo(AContext.Binding.PeerIP, AContext.Binding.PeerPort, s1, Id_IPv4, nil);
  end;
end;
а если убрать строку приема, сервер отправляет сообшение

Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  s, s1: AnsiString;
begin
  //AContext.Connection.IOHandler.ReadStream(MemStream, -1, True);
  s := MemStream.DataString;
  if Pos('<policy-file-request/>', s) <> 0 then
  begin
    s1 := '<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>';
    AContext.Binding.SendTo(AContext.Binding.PeerIP, AContext.Binding.PeerPort, s1, Id_IPv4, nil);
  end;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 23.01.2017, 12:31   #19
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

А почему AContext.Connection.IOHandler.ReadS tream(MemStream, -1, True);? используете ведь это же потоковое а у вас одна строка? Поэтому и не принимает ждет много строк

Пример же написал я в посте #17
Aliens_wolfs вне форума Ответить с цитированием
Старый 23.01.2017, 12:36   #20
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

следующии ответ на запрос 35000 символов
зы. у меня MemStream : TStringStream;
просто название переменной осталось от опытов
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прием и передача данных по COM порту PTyTb32 Компоненты Delphi 2 26.06.2015 22:12
Прием и передача данных в PCI_E устройство Andrei4 Помощь студентам 2 12.11.2010 18:33
Передача потока с использованием idtcpServer Lvenok Помощь студентам 0 24.03.2010 19:03
передача файла от idtcpclient к idtcpserver SeЯgey Работа с сетью в Delphi 1 13.05.2008 11:21