9 个解决方案
#1
recv是按顺序接收的
#2
那么就是得先得到文件长度,然后一个循环,循环次数等于文件大小除以缓冲区大小?
#3
创建一个线程调用recv负责接收比较好吧,recv函数有返回值的,根据返回值用while循环接收不可以么?
#4
很大的文件肯定是多次发送的,所以recv肯定也是多次接受的
如果是TCP的,那肯定是按顺序来的
如果是UDP的,自己在发送时编个序号就行了
如果是TCP的,那肯定是按顺序来的
如果是UDP的,自己在发送时编个序号就行了
#5
因为recv阻塞所以已经用了多线程,只是不知道如何把所有的数据都接收到,所以现在是缓冲区定义多大我就能收多少。。。。。。。。。。。。。循环试试。。
#6
1.TCP下的Revc肯定是顺序接受的。
2.对于大文件的传输需要自己在接收方和发送方定义协议。
3.发送与接受的一包数据最好不要大于当前路由器MTU的大小
2.对于大文件的传输需要自己在接收方和发送方定义协议。
3.发送与接受的一包数据最好不要大于当前路由器MTU的大小
#7
用一个do-while循环,找一个结束符,在没有找到之前就一直接收,存下来,等遇到就一次性发一次
#8
// Receive until the peer closes the connection
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if ( iResult > 0 )
printf("Bytes received: %d\n", iResult);
else if ( iResult == 0 )
printf("Connection closed\n");
else
printf("recv failed: %d\n", WSAGetLastError());
} while( iResult > 0 );
#9
定义包格式循环发送,循环接收。
发送端首先把文件的信息发送过来(文件名,文件大小等)然后循环发送,接收端接收第一个包后创建文件,准备开始循环接收。每次发送的时候定义好包格式(此次发送的文件大小,文件数据部分),接收端根据包格式进行接收。。。
发送端首先把文件的信息发送过来(文件名,文件大小等)然后循环发送,接收端接收第一个包后创建文件,准备开始循环接收。每次发送的时候定义好包格式(此次发送的文件大小,文件数据部分),接收端根据包格式进行接收。。。
#1
recv是按顺序接收的
#2
那么就是得先得到文件长度,然后一个循环,循环次数等于文件大小除以缓冲区大小?
#3
创建一个线程调用recv负责接收比较好吧,recv函数有返回值的,根据返回值用while循环接收不可以么?
#4
很大的文件肯定是多次发送的,所以recv肯定也是多次接受的
如果是TCP的,那肯定是按顺序来的
如果是UDP的,自己在发送时编个序号就行了
如果是TCP的,那肯定是按顺序来的
如果是UDP的,自己在发送时编个序号就行了
#5
因为recv阻塞所以已经用了多线程,只是不知道如何把所有的数据都接收到,所以现在是缓冲区定义多大我就能收多少。。。。。。。。。。。。。循环试试。。
#6
1.TCP下的Revc肯定是顺序接受的。
2.对于大文件的传输需要自己在接收方和发送方定义协议。
3.发送与接受的一包数据最好不要大于当前路由器MTU的大小
2.对于大文件的传输需要自己在接收方和发送方定义协议。
3.发送与接受的一包数据最好不要大于当前路由器MTU的大小
#7
用一个do-while循环,找一个结束符,在没有找到之前就一直接收,存下来,等遇到就一次性发一次
#8
// Receive until the peer closes the connection
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if ( iResult > 0 )
printf("Bytes received: %d\n", iResult);
else if ( iResult == 0 )
printf("Connection closed\n");
else
printf("recv failed: %d\n", WSAGetLastError());
} while( iResult > 0 );
#9
定义包格式循环发送,循环接收。
发送端首先把文件的信息发送过来(文件名,文件大小等)然后循环发送,接收端接收第一个包后创建文件,准备开始循环接收。每次发送的时候定义好包格式(此次发送的文件大小,文件数据部分),接收端根据包格式进行接收。。。
发送端首先把文件的信息发送过来(文件名,文件大小等)然后循环发送,接收端接收第一个包后创建文件,准备开始循环接收。每次发送的时候定义好包格式(此次发送的文件大小,文件数据部分),接收端根据包格式进行接收。。。