我正在尝试使用以下行从客户端向服务器发送长文本文件:
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。
答案 0 :(得分:0)
send
不保证将发送所有字节。它的返回值告诉你你发出了多少请求(我几乎可以保证它不会全部是65KB!)。你应该继续前进,直到发送完所有的传出缓冲区。
阅读您使用的功能的文档。