ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

01.02.2010, 00:52
|
|
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
Провел на форуме: 6828219
Репутация:
2274
|
|
Сообщение от n1ghtstalker
хз , как то в delphях ещё 0. но если нет предопр. оператора,просто open и ищешь элементы.
не не, я так ничё непонял, покажи пример =\
Вот в пыхе на пример
PHP код:
while(!feof($socket)) читать ответ
А вот в дельфи как 
=========
Всё, забейте, переписал прогу на пых, работает в мильён раз быстрее 
Последний раз редактировалось Ponchik; 01.02.2010 в 02:58..
|
|
|

02.02.2010, 19:31
|
|
Познающий
Регистрация: 14.05.2009
Сообщений: 92
Провел на форуме: 299447
Репутация:
5
|
|
Вопрос не совсем по Delphi, но..
У меня возникла сложность, запускаю службу Telnet, Запускаю cmd коннекчусь, но какие стандартные логин и пароль? Вводил имя учётки но на ней нет пароля.. В общем если кто знает, подскажите.
Заранее спасибо!
P.S А то я уже себе всю голову сломал...
Последний раз редактировалось iGlass; 02.02.2010 в 19:34..
|
|
|

03.02.2010, 21:21
|
|
Познающий
Регистрация: 14.05.2009
Сообщений: 92
Провел на форуме: 299447
Репутация:
5
|
|
Хочу записать в файл N кол-во символов.
Вот код:
Код:
{....................}
const
Text = 'Это я хочу записать в файл!'; // Отсюда буду писать
var
FileHandel:Integer;
DS:integer;
begin
DS:=50; // Кол-во символов
FileHandel := FileCreate(Pchar('samplefile.samp'),0);
FileOpen('samplefile.samp',fmOpenReadWrite);
FileWrite(FileHandel,Text,DS);
FileClose(FileHandel);
end.
Так вот вопрос, как программно посчитать сколько символов записали и сколько осталось?
Чтобы не указывать переменную DS (Сколько мне надо записать)
Заранее спасибо!
|
|
|

04.02.2010, 18:11
|
|
Познающий
Регистрация: 14.05.2009
Сообщений: 92
Провел на форуме: 299447
Репутация:
5
|
|
Уже разобрался в чём причина.. ) Если кому интересно то вот решение:
FileWrite(FileHandel,Text,Length(Text));
|
|
|

04.02.2010, 19:02
|
|
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме: 893829
Репутация:
34
|
|
PHP код:
procedure TForm1.Button8Click(Sender: TObject);
var StrPage, ssylka: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(ssylka, Data);
Data.Free;
end;
После этого всего нужно получить в memo1, ответ от страницы
Заранее спасибо.
Последний раз редактировалось 090808; 04.02.2010 в 19:07..
|
|
|

04.02.2010, 20:11
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
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, всё одно и тоже. Данные шлёт, но не долго, пока комп не упадёт =))
Что тут можно сделать, чтобы он бесконечно посылал запрос на сервер при этом не нагружая компьютер и не открывая кучу ненужных соединений?
|
|
|

04.02.2010, 20:27
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
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;
|
|
|

04.02.2010, 20:32
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
Сообщение от 090808
После этого всего нужно получить в memo1, ответ от страницы
Заранее спасибо.
Добавь в конец строку
PHP код:
Memo1.Lines.Add(StrPage);
|
|
|

04.02.2010, 22:22
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
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;
К сожалению не помогает, если ещё есть варианты, просьба написать.
|
|
|

04.02.2010, 23:21
|
|
Участник форума
Регистрация: 02.02.2010
Сообщений: 107
Провел на форуме: 612028
Репутация:
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..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|