>Аодскажите пожалуйста, какие есть способы доставки клиентом серверу данных находящихся в буфере
>передачи. А то сервер подвисает, ждёт конца файла. TCP_NONDELAY не помогает.
>после того, как сделали send/write на отправляющей стороне, сделайте read/recv там-же. данные будут вытолкнуты из буффера и отправлены принимающей стороне.
кроме того, можно попробовать включить и сразу выключить флаг TCP_CORK, что-то типа:
int on = 1, off = 0;
if (-1 == setsockopt(fd, SOL_TCP, TCP_CORK, (void *) &on, sizeof(on)))
warn("setsockopt(TCP_CORK)");
if (-1 == setsockopt(fd, SOL_TCP, TCP_CORK, (void *) &off, sizeof(off)))
warn("setsockopt(TCP_CORK)");
но этот способ только для Linux.
далее - философские рассуждения )
вообще, мне кажется, нужно сразу делать эти вещи в неблокирующем режиме. простота блокирующего режима - мнимая.