[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Как в Buildere при работе с idHTTP1 избавится от ошибки EIdsocketerror #10054

    А ещё лучше скажите как сделать чтоб при поевлении любой ошибки оно писало что произошла ошибка и продлжоло работу дальше, а не завергало приложение.
     
    #781 Smapt, 24 Feb 2008
    Last edited: 24 Feb 2008
  2. thetuk

    thetuk New Member

    Joined:
    22 Feb 2008
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Подскажите пжалста.
    Как получить картинку с сервера?
    делаю следующее...
    Code:
    char url[] = "/i/switch-yaru.png";char host[] = "img.yandex.ru"; 
    sprintf( request, "GET %s HTTP/1.1\r\nAccept: image/png, image/gif\r\nHost: %s\r\n
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\nConnection: Close\r\n\r\n", url, host ); 
    send( s, request, strlen( request ), 0 );
    recv( s, response, 1024*32, 0);
    
    В результате получаю ответ сервера:

    Code:
    HTTP/1.1 200 OK
    Connection: close
    Expires: Tue, 22 Apr 2008 15:56:59 GMT
    Cache-Control: max-age=5184000
    Content-Type: image/png
    Accept-Ranges: bytes
    ETag: "490032732"
    Last-Modified: Fri, 27 Jul 2007 11:27:33 GMT
    Content-Length: 296
    Date: Fri, 22 Feb 2008 15:56:59 GMT
    Server: lighttpd/1.4.18
    
    ???Как получить саму PNG'ку???
     
  3. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    во-первых ты неправильно используешь функцию recv. Здесь лучше было бы принимать данные в цикле пока сервер не закроет соединение. Картинка будет идти сразу после заголовка http-ответа(конец ответа легко определить по последовательности \x0D\x0A\x0D\x0A)

    если же лень писать правильно то после получения заголовка можешь просто вызвать
    recv( s, response, 1024*32, 0);
    еще раз, на этот раз там будет картинка
     
  4. Minimus

    Minimus New Member

    Joined:
    22 Sep 2007
    Messages:
    7
    Likes Received:
    4
    Reputations:
    0
    у меня такая проблема : передаю проге в командной строке IP адрес,допустим 127.0.0.1,но когда начинаю заполнять структуру sockaddr_in, то оказывается что адрес равен 27.0.0.1, куда делся первый символ?
    З.Ы. строка вида "proga 127.0.0.1 param1 param2"
     
    1 person likes this.
  5. thetuk

    thetuk New Member

    Joined:
    22 Feb 2008
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    В этом и проблема. Response содержит 5 символов, при весе картинки 2Кб.
    После второго вызова делаю:
    Code:
    ofstream f_gif;
    f_gif.open("1.gif", ios::binary);
    f_gif<<response;
    f_gif.close();
    
    ???Или записывать в файл put'ом???
     
  6. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    не. ну почему все перешли на этот си++? хз какая хрень..
    делай recv в цикле. насколько я знаю функция возвращяет сколько байтов она прочитала.
    получается так.
    while (bytes=recv(s, response, 1024)>0) {
    d=open("file", O_RDRW);
    write(d, response, bytes);
    }
    так по идее должно получится
     
  7. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    ... да потому что такими циклами самими по себе не сделать мало мальски хорошую программу, всем приходится привыкать к реалиям мастдая. Если цикл значит новая нитка(thread).... далее по Рихтеру и С++
    а если не нитка а асинхронные сокеты, то далее по Win32socket.faq и С++!
     
  8. LynXzp

    LynXzp Elder - Старейшина

    Joined:
    21 Oct 2007
    Messages:
    147
    Likes Received:
    22
    Reputations:
    0
    Ламерский вопрос по С++ (Borland Turbo C++)
    Возникает событие во второй форме (Unit2.cpp), как заставить выполнятся код, который находится в первой форме (Unit1.cpp) (функцию ну или другое событие).

    (Думал создать невидимый чекбокс и нажимать его - но это как-то не правильно) :)
     
  9. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    сделать функцию в первой форме и при возникновении событии во второй форме вызывать эту функцию?

    вначале сделай хидер Unit1.h там опиши функцию, потом имплементацию функции в Unit1.cpp.
    дальше инклуди Unit1.h в Unit1.cpp и Unit2.cpp и при событии вызывай ф-цию из Unit1.cpp. посмотрим что произойдет.
    несколько абстрактный пример

    Unit1.h
    Code:
    int event_handler(int arg);
    
    Uni1.cpp
    Code:
    #include "Unit1.h"
    
    int event_handler(int arg);
    {
        ...
    }
    
    Unit2.cpp
    Code:
    #include "Unit1.h"
    
    int main(int argc, char *argv[])
    {    ...
        if(event) {
            event_handler(event);
        };
        ...
    }
    
     
    #789 zythar, 25 Feb 2008
    Last edited: 25 Feb 2008
    1 person likes this.
  10. LynXzp

    LynXzp Elder - Старейшина

    Joined:
    21 Oct 2007
    Messages:
    147
    Likes Received:
    22
    Reputations:
    0
    Я что-то протупил. Так пробовал (не работало) - решил еще раз сделать чтобы конкретно сказать что говорит компилятор (интуитивно догадываюсь, но хотелось бы уточнить.. :)).
    В общем заработало. (черт его знает - видимо была опечатка)
     
  11. symbioin

    symbioin Member

    Joined:
    6 Aug 2007
    Messages:
    62
    Likes Received:
    23
    Reputations:
    -16
    помогите найти скрипт создания md5
     
  12. Garfi

    Garfi Elder - Старейшина

    Joined:
    1 Feb 2008
    Messages:
    85
    Likes Received:
    23
    Reputations:
    0
    Занимаюсь С++, не могу понять в чем ошибка?

    Программа должна считать ср. арифм. 2-х чисел (переменной - а, и переменной - b)

    Вот иходник:

    Code:
    #include <iostream.h>
    
    void main ()
    {
    	int a;
    	cout<<"vvedite pervoe chislo\n";
    	cin>>a;
    	int b;
    	cout<<"vvedite vtoroe chislo\n";
    	cin>>b;
    	int c;
    	c=(a+b)/2;
    	cout<<"srednee arifmeticheskoe="<<c;cout"\n";
    }
    Компилятор Visual C++ 6.0 выдает ошибку:

    "c:\program files\microsoft visual studio\myprojects\dz\srednee_arifmeticheskoe_dvuh_chisel\source.cpp(13) : error C2143: syntax error : missing ';' before 'string'
    Error executing cl.exe."
     
  13. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Code:
    cout<<"srednee arifmeticheskoe="<<c;cout[COLOR=SandyBrown]<<[/COLOR]"\n";
     
    1 person likes this.
  14. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    symbioin
    тут ты ответа на этот вопрос не найдешь. никто не может написать СКРИПТ на си/си++ ибо не существует интерпретатора языка си.

    во вторых ты не можешь СОЗДАТЬ md5. ты можешь сгенерировать md5 хеш.

    в третиьх. я не знаю ((*
     
    #794 zythar, 26 Feb 2008
    Last edited: 26 Feb 2008
    1 person likes this.
  15. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    1 person likes this.
  16. Smapt

    Smapt Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    31
    Likes Received:
    32
    Reputations:
    3
    Где почтать про работу Client сокетов в многопоточном режиме? (с++)
     
  17. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    В документации к используемым фреймворкам/библиотекам либо в документации ОС, если не используются библиотеки и фреймворки.
     
    1 person likes this.
  18. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    Непонятен вопрос..... а что там читать ??? Там не пахнет никакими семафорами и другими средствами синхронизации. Сокет понятие уникальное для сессии. На каждый поток обычно уникальный сокет.... то есть нитка не видит что сокетов много , у нее он СВОЙ.

    ..... есть только один вариант в который СТРАШНО верить потоков много а сокет один, неужели ты это имел ввиду??? Но насколько я знаю винсокдлл.... она все запросы вси рафно ставит в очередь.... коллизий в ней не будет. Критические секции тоже не стоит ставить на recv и send для одного "глобального" сокета.... для систем с вытесняющей многозадачностью эти команды не разбиваются на составные части.... а выполняются как ОДНО-ЦЕЛОЕ, то есть все равно ктото будет первым а ктото вторым!
     
    #798 Delimiter, 28 Feb 2008
    Last edited: 28 Feb 2008
  19. Meanor

    Meanor Elder - Старейшина

    Joined:
    9 Sep 2007
    Messages:
    66
    Likes Received:
    9
    Reputations:
    0
    Добрый день,

    начал изучение с++, но появился очень простой вопрос, на который, к сожалению, в гугле одназначно ответить не могут... Вопрос такой: "Где лучше прописыватть методы класса, в нем или вне его?" Вроде удобнее первый, но так нигде не пишут :(.

    Спасибо за внимание, уделенное моему вопросу.
     
  20. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    пишут и так и так встречал оба варианта.... поэтому как нравится.... вот к примеру мне не нраивтся ООП ваапще.... дык я и не "кашляю" даже 8))))

    ... доходит до смешного, если мну нужен код.... я выдираю из классов и делаю понятные только мне функции и структуры
     
Thread Status:
Not open for further replies.