Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Виснет send 
V
    Опции темы
sadny
Дата 18.9.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.9.2011

Репутация: нет
Всего: нет



Код

#include <cstdlib>
#include <iostream>
#include <winsock2.h>
#include <conio.h>
#include <string.h>


using namespace std;


int main(int argc, char* argv[])
{
    const int MAX_PACKET_SIZE = 50120;
    string request = "GET / HTTP/1.0\r\nHost: host.ru\r\n\r\n";
    char host_name[] = "host.ru";

    
    WSADATA        ws;
    SOCKET        s;
    sockaddr_in    adr;
    hostent*    hn;
    char        buff [MAX_PACKET_SIZE/sizeof(char)];

    
    if (WSAStartup (0x0202, &ws) == 0)                                            
       if (INVALID_SOCKET != (s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) ) )
          if (NULL != ( hn = gethostbyname (host_name) ) )                     
             {
             adr.sin_family                = AF_INET;
             adr.sin_addr.S_un.S_addr    = *(DWORD* ) hn->h_addr_list[0];
             adr.sin_port                = htons (80);
             if (SOCKET_ERROR != connect (s, (sockaddr* )&adr,  sizeof (adr) ) )
                if (SOCKET_ERROR != send (s, request.c_str(), sizeof (request.c_str()), 0) )     
                   { 
                   int len = recv (s, buff, MAX_PACKET_SIZE, 0);                
                   if (len <= 0)
                      cout << "Error packet recv: " << WSAGetLastError() << endl;   
                   }
                else
                    cout << "Error packet send: " << WSAGetLastError() << endl;           
             else
                 cout << "Error socket connect or bad domain: " << WSAGetLastError() << endl;               
             }
       else 
            cout << "Error open socket: " << WSAGetLastError() << endl;        
    else        
        cout << "Error Winsock library download: " << WSAGetLastError() << endl;
        
 
    WSACleanup();  
    closesocket(s);
   
    getch();    
}


Виснет сенд, как только меняю string request на char request[] (и убираю функции c_str), все ок...
PM MAIL   Вверх
volatile
Дата 18.9.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: нет
Всего: 85



Цитата(sadny @  18.9.2011,  17:16 Найти цитируемый пост)
 sizeof (request.c_str()), 

заменть на request.size (),
PM MAIL   Вверх
sadny
Дата 18.9.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 18.9.2011

Репутация: нет
Всего: нет



Спасибо огромное!! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.