Здравствуйте, 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" дело не доходит никогда.
Хотя без функции ожидания, в данном случае, данные посылаются норамально.Т.е. на другом конце есть кому читать.
Пасиба!