【发布时间】:2011-07-28 18:59:36
【问题描述】:
嘿,我正在制作一个发送/接收文件的简单程序,我的代码发送文本文件,但是当涉及到二进制时它开始出现错误,代码:
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);
}
已修复:请检查我的回答 \/
【问题讨论】:
标签: c