Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > проблемы со студией


Автор: dj100500 23.3.2011, 13:56
подскажите чо ВС ругается http://gyazo.com/a3c3dedf19baedf5606da08c2f2b623d.png
ЗЫ Си полтора дня учу так что если на этих трех строчках ### код не срите плиз;)

Автор: azesmcar 23.3.2011, 14:10
подключи библиотеку Ws2_32.lib

Автор: dj100500 23.3.2011, 14:12
чот не соображу как это сделать в студии*redface*

Автор: azesmcar 23.3.2011, 14:18
например так
Код

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


Автор: dj100500 23.3.2011, 14:20
опа пасибки

Добавлено @ 14:21
а и еще почему не создается сокет;(
sock == -1
там чтоли WSAStartup надо вызвать
непойму чо в wVersionRequested писать

Автор: azesmcar 23.3.2011, 14:29
Цитата(dj100500 @  23.3.2011,  14:20 Найти цитируемый пост)
там чтоли WSAStartup надо вызвать

 smile

Добавлено через 2 минуты и 41 секунду
Цитата(dj100500 @  23.3.2011,  14:20 Найти цитируемый пост)
непойму чо в wVersionRequested писать

Код

MAKEWORD(2, 2);

Автор: dj100500 23.3.2011, 14:32
чот не помйму как  WSAStartup вызывать уже дошел до полного бреда smile 
Код

#include "stdafx.h"
#pragma comment(lib, "ws2_32.lib")


SOCKET sock;

int main(int argc, char *argv[])
{
    WSADATA *ws = (WSADATA *)malloc(sizeof(WSADATA));
    system("color A");
    printf("%i",WSAStartup(0.1,ws));
    if((sock = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET){
        printf("some problems with create socket(%i)\n",sock);
        getchar();
        exit(INVALID_SOCKET);
    }
    getchar();
    return 0;
}


Добавлено через 1 минуту и 57 секунд
ой ой все пасиб сделал так
Код

#include "stdafx.h"
#pragma comment(lib, "ws2_32.lib")


SOCKET sock;

int main(int argc, char *argv[])
{
    WSADATA ws;
    system("color A");
    printf("%i",WSAStartup(MAKEWORD(2, 2),&ws));
    if((sock = socket(AF_INET,SOCK_STREAM,0)) == INVALID_SOCKET){
        printf("some problems with create socket(%i)\n",sock);
        getchar();
        exit(INVALID_SOCKET);
    }
    getchar();
    return 0;
}



Добавлено через 14 минут и 32 секунды
а и еще хотелосьбы узнать естьли в стандартной библиотеке метод переводящий к примеру строку "123" в int 123

Автор: dj100500 23.3.2011, 20:02
помогите с функцией bind точнее со вторым и третим аргументами smile 

ЗЫ знаю дико туплю просто норм документации с примерами не нашел
единственно что нашел в мсдн это кусок кода без коментов с кучей лишнего дерьма
и вообще подскажите чонить по winsock2 на русском

Автор: dj100500 24.3.2011, 14:29
все с этим разобрался терь подскажите с этим smile 
recvfrom(sock,buff,1024,0,(struct sockaddr *)&hacker,
sizeof(hacker)//вот как здесь адрес этого получить или чо тут;(
);

Автор: dj100500 24.3.2011, 14:57
и еще вопрос как получить текст в консоли в мой буффер
fscanf(stdout,"%s",buff);
чот не пашет;(

Автор: dj100500 24.3.2011, 16:48
ну тык чо оч надо прост последнее особенно

Автор: bra1ny 24.3.2011, 22:54
Ну потрудитесь , почитайте http://msdn.microsoft.com/en-us/library/ms686971%28v=VS.85%29.aspx

Автор: dj100500 25.3.2011, 21:57
попробывал так
Код

int getstdout(char cbuff[])
{
    HANDLE _stdout;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 
    if((_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
        return 0;
    ReadFile(_stdout,cbuff,1024,0,0);
    return 1;
}

толку ноль smile  smile  smile 
прост с английским не очень дружу(буду учить)

Автор: dj100500 26.3.2011, 12:23
ну парни чож все злые такие я ж не прост спрашиваю я пытался(пытаюсь) сам сделать но ни как;(
хотяб на ошибки укажите

Автор: dj100500 26.3.2011, 14:39
по идее все ок должно быть
fgets(outbuff,1024,stdout);
но нифига;(

Автор: bra1ny 26.3.2011, 15:02
Ну посмотрите , что GetLastError() возвращает Вам.

Автор: dj100500 27.3.2011, 12:08
возвращает 18
буфер в который писал пуст;(

Автор: dj100500 28.3.2011, 18:23
ну тык чо никто непоможет чоль;(
гугл молчит smile 

Автор: bra1ny 28.3.2011, 18:44
И где вы гетластеррор вызываете?)))

Автор: bra1ny 28.3.2011, 19:05
И кстати вы не там читаете.Вам надо в сторону ReadConsoleOutput смотреть.

Автор: dj100500 28.3.2011, 19:31
ну сразу после вызова функции вызываю
ща покопаю пасиб

Автор: dj100500 29.3.2011, 16:49
так значит все вывод получил
но терь еще пара проблемок smile 
Код

int GetStdOut(char *_outbuff)
{
    BOOL i;
    int q;
    HANDLE stdouth = GetStdHandle(STD_OUTPUT_HANDLE);
    SMALL_RECT ReadRect;
    CHAR_INFO cin[60 * 80];
    COORD coordBufSize;
    COORD coordBufCoord;
    ReadRect.Top = 0;
    ReadRect.Left = 0;
    ReadRect.Right = 79;
    ReadRect.Bottom = 1;

    coordBufSize.Y = 60;
    coordBufSize.X = 80;

    coordBufCoord.X = 0;
    coordBufCoord.Y = 0;
    
    system("dir");

    i = ReadConsoleOutput(
        stdouth,        
       cin,       
       coordBufSize,
       coordBufCoord,
       &ReadRect);
    if(!i)
        return i;
    for(q = 0;q<160;q++)
        _outbuff[q] = cin[q].Char.AsciiChar;
    free(cin);//здесь ошибка времени выполнения
    printf("\n\n\n\n%s",buff);
    return i;
}


выводит почемуто только две строчки;(

Автор: xvr 29.3.2011, 17:57
Для справки - stdout это поток для вывода на консоль, а вы из него вводить пытаетесь. Вам нужен stdin

Автор: dj100500 29.3.2011, 19:55
Цитата(xvr @ 29.3.2011,  17:57)
Для справки - stdout это поток для вывода на консоль, а вы из него вводить пытаетесь. Вам нужен stdin

ты не понялн бро в stdout выводиться данные например когда я вызываю system("dir") а мне надо считать что она написала а из stdin приходят данные(к примеру от юзера)
ну или я чегот не понял

кста вот на шарпе  Console.OpenStandardOutput().Read(... а на си как так сделать

Автор: bra1ny 29.3.2011, 22:02
Цитата

//здесь ошибка времени выполнения

 Угу. Почитайте книгу по языку для начала.

Автор: xvr 30.3.2011, 10:52
Цитата(dj100500 @ 29.3.2011,  19:55)
Цитата(xvr @ 29.3.2011,  17:57)
Для справки - stdout это поток для вывода на консоль, а вы из него вводить пытаетесь. Вам нужен stdin

ты не понялн 

Я то понял, а вот у вас вот это -
Цитата

и еще вопрос как получить текст в консоли в мой буффер
fscanf(stdout,"%s",buff);
чот не пашет;( 
у вас что такое?
И вот это -
Цитата

Код

int getstdout(char cbuff[])
{
    HANDLE _stdout;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 
    if((_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
        return 0;
    ReadFile(_stdout,cbuff,1024,0,0);
    return 1;
}
?
И вот это -
Цитата

по идее все ок должно быть
fgets(outbuff,1024,stdout);
но нифига;( 

stdout везде видите? А должен быть stdin

Автор: dj100500 30.3.2011, 17:38
Цитата(xvr @ 30.3.2011,  10:52)
Код

int getstdout(char cbuff[])
{
    HANDLE _stdout;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 
    if((_stdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE)
        return 0;
    ReadFile(_stdout,cbuff,1024,0,0);
    return 1;
}


вот это кокрас пашет только не доконца(несколько строчек считывает а дальше нет)
ой с фрии понял у мя прост до этого под массив через calloc выделялась память а ща сменил а free убрать забыл;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)