![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает запрос по TCP
Ыфь86 © (2010-03-14 11:51:00)Валится на connect, хотя putty с теми же параметрами спокойно подключается.
Function SendRequest(Request:string; Port:integer; const IP:string):string;
var
sockfd, portno, n:integer;
serv_addr:sockaddr_in;
server:Phostent;
begin
portno := Port;
sockfd := socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) then
raise Exception.Create('ERROR opening socket');
server := gethostbyname(PChar(IP));
if (server = nil) then
raise Exception.Create('ERROR, no such host');
ZeroMemory(@serv_addr,sizeof(serv_addr));
serv_addr.sin_family := AF_INET;
CopyMemory(@serv_addr.sin_addr.s_addr,server.h_addr,server.h_length);
serv_addr.sin_port := htons(portno);
if (connect(sockfd,serv_addr,sizeof(serv_addr)) < 0) then
raise Exception.Create('ERROR connecting');
n:=send(sockfd,Request[1],Length(Request),0);
if (n < 0) then
raise Exception.Create('ERROR writing to socket');
ZeroMemory(@buffer[0],65535);
n:=recv(sockfd,buffer[0],65535,0);
Result:='';
if (n > 0) then begin
SetLength(Result,n);
CopyMemory(@Result[1],@buffer[0],n);
end;
closesocket(sockfd);
end;
@!!ex (2010-03-15 19:15:00) [1]Вот здесь проблема:
CopyMemory(@serv_addr.sin_addr.s_addr,server.h_addr,server.h_length);
тут указатель на указатель, поэтому должно быть:
CopyMemory(@serv_addr.sin_addr.s_addr,server.h_addr^,server.h_length);
oldman (2010-03-14 16:19:00) [2]IP Information - 156.138.58.0
Country United States
Country Code US
Region Ohio
City Columbus
Postal Code 43215
Latitude 39.9653
Longitude -83.0235
Area Code 614
DMA Code 535
Anatoly Podgoretsky (2010-03-14 16:14:00) [3]> Ыфь86 (14.03.2010 15:59:03) [3]
Это шлюз Макдоналдса
Ыфь86 (2010-03-14 15:59:00) [4]В putty я тоже 127.0.0.1 ввоожу и все норм.
Первым делом подумал на свою ошибку... Потом на вирус, если я использую любой IP то всегнда стучится на 156.138.58.0, если указываю каком нибудь хост, то несколько вариантов IP получается вида: X.139.58.0
Что это может быть за вирус и как его вычислить?
Гугл как-то не выдает ничего в тему...
Anatoly Podgoretsky (2010-03-14 15:36:00) [5]Если ты уверен, что ИП=127.0.0.1 то у тебя вирус.
Ыфь86 (2010-03-14 14:50:00) [6]IP это 127.0.0.1 и еще localhost пробовал.
А судя по показаниям сетевого монитора соединение устанавливается с 156.138.58.0
ничего не понимаю...