Re[4]: сокеты (проблема с приемом/отправкой)
От: dr3  
Дата: 24.11.03 12:12
Оценка:
Здравствуйте, alexku, Вы писали:

.. в теории должно было помочь, но..

короче пишу:
...
#include "sock_helper.h" //тут функция фенкция "socketReady"
...


//-----------------------------------------------------------------------------    
    //writing into socket (or sending)
    //socket ready?
    if(READY == (ret = socketReady(sDS, 1, 10, 0)))   //writing ...
    {
    int sent;
    int len; 
    
    while(true) { //write all from buffer
    
     len = command.length();
    
         sent = send (sDS, command.c_str(), len, 0);
     if(sent == -1) 
        throw new CommandException("command 'SAVE_FILE': sending FAILED!");
        
        //if had been wroten not all, then we need finish
        // writing from our buffer
        if(sent < len) {
            command = command.substr(sent-1, len-sent-1);
        //debug
        cout << "had been wroten not all.." << endl;
        continue;
        }
        
        //here everything from buffer was wroten. (it's OK)
        break;
    }
     
    } else { //SOCKET NOT READY
    //cheking 'ret'
    if(ret == ERROR)
        throw new CommandException("command 'SAVE_FILE': ERROR!");
    if(ret == END_TIMEOUT)
        throw new CommandException("command 'SAVE_FILE': END_TIMEOUT!");
    }  
//-----------------------------------------------------------------------------   

...



Получается, что сокет всегда занят и до "send" дело не доходит никогда.

Хотя без функции ожидания, в данном случае, данные посылаются норамально.Т.е. на другом конце есть кому читать.


Пасиба!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.