将长文本文件发送到服务器

时间:2014-03-18 22:13:15

标签: c++

我正在尝试使用以下行从客户端向服务器发送长文本文件:

FILE *trans = fopen(filename, "rb");
unsigned char *linha2 = (unsigned char*) malloc (sizeof(unsigned char)* 65536);
send(ConnectSocket, filename, (int)strlen(filename), 0);
long counter=0;
long read;
while(counter < lSize){ // lSize is the length of the file's content
    read = fread_s(linha2,  65536, sizeof(char),  65536, trans);
    counter += send(ConnectSocket, (char*)linha2, read, 0); // marked line
}

当我执行它时,完整的字符串没有完全发送。而且,当我在标记的行上放置一个断点,然后按继续我就发送了完整的字符串。为什么请?

操作系统:Windows 7 SP1。

IDE: Visual Studio 2013。

1 个答案:

答案 0 :(得分:0)

send不保证将发送所有字节。它的返回值告诉你你发出了多少请求(我几乎可以保证它不会全部是65KB!)。你应该继续前进,直到发送完所有的传出缓冲区。

阅读您使用的功能的文档。