
10.11.2008, 22:35
|
|
Участник форума
Регистрация: 06.05.2008
Сообщений: 161
С нами:
9480791
Репутация:
59
|
|
Код:
#include <stdafx.h>
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <sstream>
using namespace std;
#define PORT 80
#define SERVERADDR "127.0.0.1"
int main()
{
setlocale(LC_ALL,"RUS");
char buff [ 1024 ] = "" ;
cout << ("TCP Client\n");
/*******************Проверка инициализации***************/
if ( WSAStartup ( 0x202, ( WSADATA * ) &buff [ 0 ] ) )
{
cout << "WSAStart error \n " << WSAGetLastError ( ) ;
return -1;
}
/********************************************************/
SOCKET my_sock ;
/*******************Создаем сокет************************/
my_sock = socket ( AF_INET, SOCK_STREAM, 0 );
if ( my_sock < 0 ) //
{
cout << "Socket ( ) error\n" << WSAGetLastError ( ) ;
return -1;
}
/********************************************************/
sockaddr_in dest_addr ;
dest_addr.sin_family=AF_INET; //инет коннектинг
dest_addr.sin_port=htons ( PORT ); //порт
HOSTENT *hst; // хост
if ( inet_addr ( SERVERADDR ) !=INADDR_NONE )
dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
else
if ( hst=gethostbyname ( SERVERADDR ) ) ( ( unsigned long * ) &dest_addr.sin_addr ) [ 0 ] =
( ( unsigned long ** ) hst->h_addr_list ) [ 0 ] [ 0 ] ;
else
{
printf ( "invalid address %s \n ", SERVERADDR ) ;
closesocket ( my_sock ) ;
WSACleanup ( ) ;
return -1;
}
if (connect ( my_sock, ( sockaddr * ) &dest_addr, sizeof ( dest_addr ) ) )
{
cout << " Connect error \n" << WSAGetLastError ( ) ;
return -1;
}
cout << "Соединение с " << SERVERADDR << " успешно установлено \n";
int nsize;
stringstream clientRequest;
clientRequest << "GET / HTTP/1.1\r\n"
"Host: 127.0.0.1\r\n"
"User-Agent: MOBILKA\r\n"
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
"Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n";
char clientRequest2[1000];
//int mlen;
//mlen = strlen(clientRequest);
send(my_sock, clientRequest.str().data(), clientRequest.str().size(),0);
//send(my_sock, (char *) clientRequest, mlen, MSG_DONTROUTE);
const int s_ciBufLen=1024;
char cBuff[513];
string page;
//int i=0;
while (recv (my_sock, (char *) &cBuff, 512 , 0)> 0)
{
page+=cBuff;
//i++;
}
//recv(my_sock, (
cout << i;
closesocket ( my_sock ) ;
WSACleanup ( ) ;
return 0;
}
Почему на сервере не считается заход? Я по разному пробовал делать запрос\ответ. Результат прога либо стопорица на посылки-получение данных(ошибок нет, просто стоит на одном месте) либо возвращает пустую строку. Я так понимаю что либо ответ до сервера не доходит, либо он вобще к серверу не подключается.
Юзер агент такой что бы не путаться в логах сервера, пробовал писать нормальный юзер агент на результат это не влияет
*************
Разобрался. ошибка была в неправельной посылки заголовков
Последний раз редактировалось n4e/\@; 11.11.2008 в 15:29..
|
|
|