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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не читаются данные 
V
    Опции темы
worsvch
Дата 21.4.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Запускаю программу, при этом на консоль ничего не выходит и программа не завершается и ошибок никаких. 80 порт открыт на 100%, можно любой другой порт, это неважно. Коннект проходит, проверяли на другом компе с помощью netstat -an. Подскажите, в чем может быть ошибка?
Код

#include "stdafx.h"
#include <clocale>
#include <cstring>
#include <winsock2.h>
#include <iostream>

#pragma comment(lib,"ws2_32.lib")

using namespace std;

void error(char* text) {
        cout << "Error: " << text << endl;
        exit(1);
}

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    
    WSAData wsa;
    SOCKET sc;
    struct sockaddr_in peer;
    int s = 0;
    int s1 = 0;
    int rc = 0;
    char buf[100] = {'\0'};

    WSAStartup(MAKEWORD(2,2),&wsa);
    peer.sin_family = AF_INET;
    peer.sin_port = htons(80);
    peer.sin_addr.S_un.S_addr = inet_addr("xx.xx.xx.xx");
    
    sc = socket(AF_INET,SOCK_STREAM,0);
    if (s == INVALID_SOCKET) error("socket");    

    rc = connect(sc,(sockaddr*)&peer,sizeof(peer));

    rc = recv(sc,buf,sizeof(buf),0);
    if (SOCKET_ERROR) cout << "Error: " << WSAGetLastError() << endl;
    cout << buf << endl;
    
    closesocket(sc);
    WSACleanup();

    return 0;
}


Это сообщение отредактировал(а) worsvch - 21.4.2012, 13:20
PM MAIL   Вверх
boostcoder
Дата 21.4.2012, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(worsvch @  21.4.2012,  13:18 Найти цитируемый пост)
rc = connect(sc,(sockaddr*)&peer,sizeof(peer));

после этой строки, добавь вывод rc и errno.
ну и показывай.
PM WWW   Вверх
worsvch
Дата 21.4.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 21.4.2012,  13:27)
Цитата(worsvch @  21.4.2012,  13:18 Найти цитируемый пост)
rc = connect(sc,(sockaddr*)&peer,sizeof(peer));

после этой строки, добавь вывод rc и errno.
ну и показывай.

Код

#include "stdafx.h"
#include <clocale>
#include <cstring>
#include <winsock2.h>
#include <iostream>

#pragma comment(lib,"ws2_32.lib")

using namespace std;

void error(char* text) {
        cout << "Error: " << text << endl;
        exit(1);
}

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    
    WSAData wsa;
    SOCKET sc;
    struct sockaddr_in peer;
    int s = 0;
    int s1 = 0;
    int rc = 0;
    char buf[100] = {'\0'};

    WSAStartup(MAKEWORD(2,2),&wsa);
    peer.sin_family = AF_INET;
    peer.sin_port = htons(80);
    peer.sin_addr.S_un.S_addr = inet_addr("xx.xx.xx.xx");
    
    sc = socket(AF_INET,SOCK_STREAM,0);
    if (s == INVALID_SOCKET) error("socket");    

    rc = connect(sc,(sockaddr*)&peer,sizeof(peer));
    //if (rc != 0) error("connect");
    cout << "rc = " << rc << endl;
    cout << "errno = " << errno << endl;

    rc = recv(sc,buf,sizeof(buf),0);
    if (rc == -1) cout << "Error: " << WSAGetLastError() << endl;    
    cout << "Buffer: " << buf << endl;
    
    closesocket(sc);
    WSACleanup();

    return 0;
}

Результат:
rc = 0
errno = 0

Это сообщение отредактировал(а) worsvch - 21.4.2012, 13:44
PM MAIL   Вверх
feodorv
Дата 21.4.2012, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(worsvch @  21.4.2012,  14:18 Найти цитируемый пост)
Подскажите, в чем может быть ошибка?

Здесь:
Цитата(worsvch @  21.4.2012,  14:18 Найти цитируемый пост)
rc = recv(sc,buf,sizeof(buf),0);

Чтобы что-нибудь получить, надо что-нибудь послать. И послать нужно HTTP-запрос  smile 



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
worsvch
Дата 21.4.2012, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(feodorv @ 21.4.2012,  14:35)
Цитата(worsvch @  21.4.2012,  14:18 Найти цитируемый пост)
Подскажите, в чем может быть ошибка?

Здесь:
Цитата(worsvch @  21.4.2012,  14:18 Найти цитируемый пост)
rc = recv(sc,buf,sizeof(buf),0);

Чтобы что-нибудь получить, надо что-нибудь послать. И послать нужно HTTP-запрос  smile

Спасибо, все получилось smile

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


 




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


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

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