Эй, я делаю простую программу, которая отправляет / получает файлы, мой код отправляет текстовые файлы, но когда дело доходит до двоичного файла, он начинает глючить, код:
static void
send_event(conn,file)
void *conn;
void *file;
{
FILE *f;
char *buffer;
int32_t block_size;
int32_t size;
size_t __read;
ConnectionQueue *q;
f = (FILE *)file;
q = (ConnectionQueue *)conn;
block_size = conf_getint("transfer:block_size");
if (block_size <= 1 || block_size > 1024)
{
abort();
return;
}
buffer = (char *)MyMalloc(block_size);
if (!q || !f)
return;
fseek(f,0L,SEEK_END);
size = ftell(f);
if (size == 0L)
{
send_socket(q->conn,"RECEIVE: 302 FSE");
return;
}
fseek(f,0,SEEK_SET);
while (true)
{
if (q->abort)
{
send_socket(q->conn,"RECEIVE: File transfer aborted\n");
if (f)
fclose(f);
f = NULL;
MyFree(buffer);
return;
}
__sleep(100);
__read = fread(buffer,sizeof(char),512,f);
if (__read <= 0)
{
send_socket(q->conn,"RECEIVE: EOF\n");
break;
}
if (*buffer == '\0')
{
send_socket(q->conn,"RECEIVE: EOF\n");
break;
}
send_socket(q->conn,"RECEIVE: %s\n",buffer);
}
send_socket(q->conn,"RECEIVE: 915 EOF\n");
fclose(f);
f = NULL;
MyFree(buffer);
}
ИСПРАВЛЕНО: Пожалуйста, проверьте мой ответ \ /