HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 04.02.2010, 18:11
iGlass
Познающий
Регистрация: 14.05.2009
Сообщений: 92
С нами: 8944114

Репутация: 5
По умолчанию

Уже разобрался в чём причина.. ) Если кому интересно то вот решение:

Цитата:
FileWrite(FileHandel,Text,Length(Text));
 
Ответить с цитированием

  #2  
Старый 04.02.2010, 19:02
090808
Познающий
Регистрация: 15.03.2009
Сообщений: 87
С нами: 9030319

Репутация: 34
По умолчанию

PHP код:
procedure TForm1.Button8Click(SenderTObject); 
var 
StrPagessylka:string
    
Data:TstringList
begin 
 idhttp1
.HandleRedirects:=true
 
StrPage:=idhttp1.Get('http://***.jino.ru/panel/rcon.php/'); 
 
Data:=TstringList.Create
 
Data.Add('ip=**.**.**.**'); 
 
Data.Add('port=7777'); 
 
Data.Add('pass=*****'); 
 
Data.Add('cmd=chat'); 
 
Data.Add('submit=Отправить запрос'); 
 
StrPage:=idhttp1.Post(ssylkaData); 
 
Data.Free
end

После этого всего нужно получить в memo1, ответ от страницы


Заранее спасибо.

Последний раз редактировалось 090808; 04.02.2010 в 19:07..
 
Ответить с цитированием

  #3  
Старый 04.02.2010, 20:32
GlooK
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
С нами: 10030823

Репутация: 149
По умолчанию

Цитата:
Сообщение от 090808  


После этого всего нужно получить в memo1, ответ от страницы


Заранее спасибо.
Добавь в конец строку
PHP код:
Memo1.Lines.Add(StrPage); 
 
Ответить с цитированием

  #4  
Старый 05.02.2010, 09:22
090808
Познающий
Регистрация: 15.03.2009
Сообщений: 87
С нами: 9030319

Репутация: 34
По умолчанию

Цитата:
Сообщение от GlooK  
Добавь в конец строку
PHP код:
Memo1.Lines.Add(StrPage); 
Спсибо помогло, но оно добовляет исходник страницы, а как сделать чтобы просто текст был?
 
Ответить с цитированием

  #5  
Старый 05.02.2010, 09:57
GlooK
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
С нами: 10030823

Репутация: 149
По умолчанию

Цитата:
Сообщение от 090808  
Спсибо помогло, но оно добовляет исходник страницы, а как сделать чтобы просто текст был?
PHP код:
Memo1.Lines.Text := StrPage
 
Ответить с цитированием

  #6  
Старый 04.02.2010, 20:11
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

Помогите разобратсья с проблеммой. Есть функция на WinSock для отправки GET запроса на сервер, мне нужно запустить её в бесконечном цикле, чтобы она так и слала запрос на сервер.
Но проблемма в том, что если её запустить в бесконечном цикле, то программа начинает открывать огромное количество соединений, и до тех пор, пока компьютер окончательно не повиснет.
Помогите кто сможет, вот функция:
Код:
function fWSRecv(wHost, wRequest: string):string;
var
hSocket: TSocket;
hHost: PHostEnt;
hAddr: TSockAddrIn;
hTimeout: TTimeVal;
iRead: integer;
hBuffer: array[0..buffsize] of char;
begin

 hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 hHost := gethostbyname(PChar(wHost));
 hAddr.sin_family := AF_INET;
 hAddr.sin_port := htons(80);
 hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
 hTimeout.tv_usec := 0;
 hTimeout.tv_sec := mstimeout;
 setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
 connect(hSocket, hAddr, SizeOf(hAddr));

 Send(hSocket, wRequest[1], length(wRequest), 0);
 while (TRUE) do
 begin
  FillChar(hBuffer, SizeOf(hBuffer), 0);
  iRead := Recv(hSocket, hBuffer, length(hBuffer), 0);
//  hData := hData + copy(hBuffer, 0, iRead);
  if (iRead <= 0) then break;
 end;
 CloseSocket(hSocket);
//result := hData;
end;
Вызываю так:
WSAStartup($202, wsData);
fWSRecv('localhost',
'GET /log/ass.php' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0' + #13#10 +
'Accept: text/html' + #13#10 +
'Accept-Language: ru' + #13#10 +
'Accept-Charset: windows-1251' + #13#10 +
'Connection: close' + #13#10#13#10);

Где бы я не ставил цикл "while true do", хоть в самой функции, хоть перед вызовом fWSRecv, всё одно и тоже. Данные шлёт, но не долго, пока комп не упадёт =))
Что тут можно сделать, чтобы он бесконечно посылал запрос на сервер при этом не нагружая компьютер и не открывая кучу ненужных соединений?
 
Ответить с цитированием

  #7  
Старый 04.02.2010, 20:27
GlooK
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
С нами: 10030823

Репутация: 149
По умолчанию

Цитата:
Сообщение от Nightmarе  
Где бы я не ставил цикл "while true do", хоть в самой функции, хоть перед вызовом fWSRecv, всё одно и тоже. Данные шлёт, но не долго, пока комп не упадёт =))
Что тут можно сделать, чтобы он бесконечно посылал запрос на сервер при этом не нагружая компьютер и не открывая кучу ненужных соединений?
Это ж моя функция))

По теме: если возвращаемые значения не важны, то попробуй убрать код:
Код:
 while (TRUE) do
 begin
  FillChar(hBuffer, SizeOf(hBuffer), 0);
  iRead := Recv(hSocket, hBuffer, length(hBuffer), 0);
//  hData := hData + copy(hBuffer, 0, iRead);
  if (iRead <= 0) then break;
 end;
 
Ответить с цитированием

  #8  
Старый 04.02.2010, 22:22
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

Цитата:
Сообщение от GlooK  
Это ж моя функция))

По теме: если возвращаемые значения не важны, то попробуй убрать код:
Код:
 while (TRUE) do
 begin
  FillChar(hBuffer, SizeOf(hBuffer), 0);
  iRead := Recv(hSocket, hBuffer, length(hBuffer), 0);
//  hData := hData + copy(hBuffer, 0, iRead);
  if (iRead <= 0) then break;
 end;
К сожалению не помогает, если ещё есть варианты, просьба написать.
 
Ответить с цитированием

  #9  
Старый 04.02.2010, 23:21
[stranger]
Участник форума
Регистрация: 02.02.2010
Сообщений: 107
С нами: 8563393

Репутация: 28
По умолчанию

не знаю..
в таком виде:
Цитата:
function fWSRecv(wHost, wRequest: string):string;
var
hSocket: TSocket;
hHost: PHostEnt;
hAddr: TSockAddrIn;
hTimeout: TTimeVal;
begin

hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
hHost := gethostbyname(PChar(wHost));
hAddr.sin_family := AF_INET;
hAddr.sin_port := htons(80);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := 10;
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
connect(hSocket, hAddr, SizeOf(hAddr));

Send(hSocket, wRequest[1], length(wRequest), 0);
CloseSocket(hSocket);
end;
все работает!

ЗЫ: shttp говорит bad request

что за переменная "mstimeout"?

Последний раз редактировалось [stranger]; 04.02.2010 в 23:31..
 
Ответить с цитированием

  #10  
Старый 04.02.2010, 23:31
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами: 10018169

Репутация: 1680


По умолчанию

Цитата:
Сообщение от [stranger]  
не знаю..
в таком виде:

все работает!

ЗЫ: shttp говорит bad request

что за переменная "mstimeout"?
Конечно работает.
У меня был вопрос в том, как сделать чтобы при бесконечном цикле не открывал по миллиёну соединений, после чего комп виснет примерно за 3 секунды.
Может кто знает как устранить проблемму?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.