WinSock...и еще 12 символов
Программа компилируется, но не происходит соединение с сервером. Почему это может быть? Какие у меня ошибки? 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 и не коннектится. Может быть я ему что-то неправильно задал?
Источник: Stack Overflow на русском