小编Bur*_*ury的帖子

套接字不发送所有二进制数据

其实我正在研究非常简单的FTP服务器.现在我遇到发送文件的问题(FTP协议中的RETR).我在我的客户端使用套接字和二进制模式.带文本的文件发送完美,但问题是二进制文件(图像等).

这是我的代码片段:

FILE *fin=fopen(fileloc,"rb");

if(fin != NULL){
    fpos_t filelen;

    fseek (fin, 0, SEEK_END);
    fgetpos (fin, &filelen);

    fseek (fin, 0, SEEK_SET);
    printf("Sending file %s (%d b)", fileloc, filelen);
    sprintf(sbuffer,"150 Opening BINARY mode data connection for file transfer.\r\n");
    bytes = send(ns, sbuffer, strlen(sbuffer), 0);
    byte temp_buffer[512];

    long int totalsent;
    totalsent = 0;

    while (!feof(fin)){

        memset(temp_buffer, '\0', sizeof(sbuffer));

        fgets((char *)temp_buffer, sizeof(sbuffer), fin);

        if (!active) bytes = send(ns_data, (char *)temp_buffer, strlen(sbuffer), 0);
        else bytes = send(s_data_act, (char *)temp_buffer, strlen(sbuffer), 0);

        totalsent = totalsent + …
Run Code Online (Sandbox Code Playgroud)

c++ sockets ftp winsock

0
推荐指数
1
解决办法
1214
查看次数

标签 统计

c++ ×1

ftp ×1

sockets ×1

winsock ×1