Показать сообщение отдельно

  #6  
Старый 10.11.2008, 22:35
n4e/\@
Участник форума
Регистрация: 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..
 
Ответить с цитированием