WinSock...и еще 12 символов

Рейтинг: 0Ответов: 1Опубликовано: 03.05.2011

Программа компилируется, но не происходит соединение с сервером. Почему это может быть? Какие у меня ошибки? WSAGetLastError() выдает ошибку 0. Может, что то внешнее ее не пускает? Типа ативируса или фаервола.

 WSADATA ws;
 hostent* hn;
 char buff [4096];
 if (FAILED (WSAStartup (MAKEWORD( 2, 2 ), &ws) ) )
 { ListBox1->Items->Add("Библиотека WSAStartup не загружена."); }
 else
 { ListBox1->Items->Add("Библиотека WSAStartup загружена."); }
 SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if (s==INVALID_SOCKET)
 { ListBox1->Items->Add("Ошибка сокета."); }
 else
 { ListBox1->Items->Add("Сокет создан успешно."); }
 struct sockaddr_in adr;
 hn=gethostbyname("www.google.com");
 if (NULL==hn)
 { ListBox1->Items->Add("Ошибка получения адреса www.google.com."); }
 else
 { ListBox1->Items->Add("Адресс www.google.com получен."); }
 //заполнение структуры с адресом
 adr.sin_family = AF_INET;
 //adr.sin_addr.S_un.S_addr=*(DWORD*)hn;
 adr.sin_addr.S_un.S_addr=inet_addr("www.google.com");
 adr.sin_port = htons (80);
 //ListBox1->Items->Add(adr.sin_addr.S_un.S_addr);
 if (SOCKET_ERROR==connect(s,(sockaddr*)&adr,sizeof(adr)))
 { ListBox1->Items->Add("Ошибка соединения."); }
 else
 { ListBox1->Items->Add("Соединение установлено."); }
 DWORD dwError=WSAGetLastError();
 ListBox1->Items->Add(dwError);
 closesocket(s);
 ListBox1->Items->Add("Сокет закрыт.");
 WSACleanup();
 ListBox1->Items->Add("Библиотека WSAStartup выгружена.");

C++Builder 6 (10.155) Исходники: http://zalil.ru/30969595

UPD:

Когда я пишу:

adr.sin_addr.S_un.S_addr=inet_addr(74.125.79.147);

У меня компилятор возмущается:

[C++ Error] Unit1.cpp(44): E2223 Too many decimal points

[C++ Error] Unit1.cpp(44): E2223 Too many decimal points

[C++ Error] Unit1.cpp(44): E2110 Incompatible type conversion

Функция connect возвращает SOCKET_ERROR и не коннектится. Может быть я ему что-то неправильно задал?

Ответы

Ответов пока нет.