Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: AlMag   (01.10.2008 в 10:56)

// ws2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "winsock2.h"
#include "windows.h"

#define request "GET /b.php HTTP/1.0\r\nHost: www.anotherd.com\r\n\r\n" // HTML запрос
#define MAX_PACKET_SIZE 4096

#define SERVER "127.0.0.1"

int main(int argc, char* argv[])
{
WSADATA ws;
SOCKET s;
sockaddr_in adr;
hostent* hn;
char buff [MAX_PACKET_SIZE];

// Init 
if (WSAStartup (0x202, &ws) != 0)
{
// Error
return -1;
}

// Создаем сокет
if (INVALID_SOCKET == (s = socket (AF_INET, SOCK_STREAM, 0/*IPPROTO_TCP*/) ) )
{
// Error
return -1;
}

// Получаем адрес
DWORD a=inet_addr(SERVER);

if (inet_addr(SERVER)!=INADDR_NONE) adr.sin_addr.S_un.S_addr = inet_addr(SERVER);
else
if (hn=gethostbyname(SERVER)) ((unsigned long *)&adr.sin_addr)[0]=((unsigned long **)hn->h_addr_list)[0][0];
else
{
printf("Invalid adress %s\n", SERVER);
closesocket(s);
WSACleanup();
return -1;
}
adr.sin_family = AF_INET;
//adr.sin_addr.S_un.S_addr = *(DWORD* ) hn->h_addr_list[0];

int port = 80;
adr.sin_port = htons (port);

if (SOCKET_ERROR == connect (s, (sockaddr* )&adr,  sizeof (adr) ))
{
// Error
return -1;
}


if (SOCKET_ERROR == send (s, &request, sizeof (request), 0) )
{
// Error
return -1;
}
int len = recv (s, (char *) &buff, MAX_PACKET_SIZE, 0);

if ( (len == SOCKET_ERROR) || (len == 0) )
{
// Error
return -1;
}

for (int i = 0; i<len; i++)
printf ("%c", buff [i]);

if (SOCKET_ERROR == closesocket (s) )
{
// Error
return -1;
}


getchar();

return 1;

}



я изменил в этом коде кое что. работает, вроде. Скажите, почему я могу изпользовать 80 порт при запущеном апаче, но не могу 135 или, скажем, 990, хотя они открыты?


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: