Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не работает запрос по 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
ничего не понимаю...


Наверх

Титульная страница Поиск, карта сайта Написать письмо