C:套接字读取失速执行

时间:2017-10-10 04:30:12

标签: c sockets io

我正在实现自定义FTP应用程序,并且在从服务器向客户端读取/保存文件时遇到一些麻烦。我的实现如下:

fp = open(filename, O_RDWR|O_CREAT, 0666);
int bytes_written, bytes_read;    
while(1) {
    bzero((char *)&buf, sizeof(buf));
    bytes_read = read(s, buf, sizeof(buf)); // s is correctly configured socket of server implementation
    if(bytes_read==0) // where i thought reading is finished
        break;
    if(bytes_read<0)
        // error checking, exit(1)

    void *p = buf;
    while(bytes_read > 0) {
        bytes_written = write(fp, p, bytes_read);
        if(bytes_written<=0)
            // error checking, exit(1)
        bytes_read -= bytes_written;
        p += bytes_written;
    }
}

我的理解是,一旦没有更多数据要读取,bytes_read将为0,我将从循环中断开。但是,在我的测试中读取和写入正确数量的字节后,程序在再次调用read后停止。我无法在该点之后打印bytes_read,并且执行不会继续执行bytes_read if语句。我是否以某种方式滥用控制流逻辑?

0 个答案:

没有答案