Попытался я работать с сокетами через библиотеку ввода/вывода C (получил fdopen'ом FILE* etc). Все было хорошо, пока я данные в одну сторону гнал, но когда я попытался сначала прочитать чего-то, а потом записать что-то другое, то записалось не только то, что я хотел записать, но и то, что я уже успел прочитать. Вставкой rewind все вылечилось, но все равно непонятно, как работать нормально. Никто не подскажет?