Я сделал следующую программу для Win32 сокетов для просмотра веб-страниц.Я использую wingw, чтобы избежать зависимости от любой среды выполнения.Чтобы получить ipaddresses, я запускаю URL-адреса, такие как www.google.com, www.yahoo.com, через командную строку и использую эти ip-адреса в своей программе.Порт, конечно, 80.
Я могу получить страницы по умолчанию Google, Yahoo и т. Д., Используя "GET / \ r \ n".Я также могу получать страницы не по умолчанию, даже те, которые находятся внутри каталогов, например http://yasini.com/newsite/index.aspx, используя "GET /newsite/index.aspx".Вывод программы в виде HTML, полученного с веб-сервера, сохраненного на жестком диске.Этот файл позже открывается в Firefox, чтобы посмотреть, как прошла связь.
Я создал тестовую веб-страницу, http://a.domaindlx.com/trysite/hello.asp,, которую я могу открыть в Firefox.Затем я пингую домен a.domaindlx.com и получаю этот ipaddress, 66.36.238.30.Я пытаюсь получить доступ к указанной странице, используя «GET /trysite/hello.asp», но получаю это в ответ: «По этому адресу не настроен веб-сайт. По этому адресу не настроен веб-сайт».
Я знаю, что указанный ответ отправляется веб-сервером, поэтому я смог подключиться к веб-серверу.Проблема в том, что веб-сервер не распознает URL, к которому я пытаюсь получить доступ.Я использовал разные веб-страницы, как htm, так и asp, и ни один из них не доступен.
При попытке открыть веб-сайт с помощью ipaddress непосредственно в браузере я получаю ту же ошибку: «Веб-сайт не настроен ...».
Основная загадка состоит в том, почему эти страницы доступны через браузер, такой как Firefox, а не через мой код, когда мой код, по сути, является браузером, означает открытое соединение с веб-сервером на порту 80.
#include windows.h
#include stdio.h
WSADATA ws;
int d;
char aa[1000];
struct sockaddr_in a;
SOCKET s;
int li;
void abc(char *p)
{
FILE *fp = fopen("c:\\data.htm", "a+");
fprintf(fp, "%s\n", p);
fclose(fp);
}
_stdcall WinMain (HINSTANCE i, HINSTANCE j, char * k, int l)
{
d = WSAStartup(0x101, &ws);
sprintf(aa, "WSASTARTUP = %d", d);
abc(aa);
s = socket(AF_INET, SOCK_STREAM, 0);
sprintf(aa, "SOCKET = %d", s);
abc(aa);
a.sin_family = AF_INET;
a.sin_port = htons(80);
//a.sin_addr.s_addr = inet_addr("74.125.236.145");
a.sin_addr.s_addr = inet_addr("66.36.238.30"); //a.domaindlx.com
//a.sin_addr.s_addr = inet_addr("206.225.85.18"); //www.domaindlx.com
//a.sin_addr.s_addr = inet_addr("87.248.122.122"); //www.yahoo.com
//a.sin_addr.s_addr = inet_addr("72.167.153.9"); //www.yasini.com
d = connect(s, (struct sockaddr *) &a, sizeof(a));
strcpy(aa, "GET /trysite/hello.asp\r\n");
strcat(aa, "HTTP 1.0 \r\n\r\n");
send(s, aa, sizeof(aa), 0);
li = 1;
while(li != 0)
{
li = recv(s, aa, 1000, 0);
abc(aa);
}
}
Примечание. Пожалуйста, заключите имена файлов заголовков в строку включения в угловые скобки, чтобы код работал.Мне пришлось удалить это, чтобы свойство формат HTML.