我希望发送一个字节数组X次,直到达到缓冲区大小。我的客户端会发送字节数组,直到缓冲区大小满为止。但问题在于数据包丢失,服务器只收到缓冲区大小的8/10左右。
我无法真正解决这个问题。当客户端发送了所有包并且服务器遭受了包丢失时,while循环不会结束,你有什么想法可以解决这个问题吗?
非常感谢。
客户端:
while(writeSize < bufferSize)
{
bytes_sent += sendto(servSocket, package, sizeof(package), 0, (struct sockaddr *)&server, sizeof(server));
writeSize+= sizeof(package);
}
服务器:
while(packetSize < bufferSize)
{
bytes_recv += recvfrom(servSocket, package, sizeof(package), 0, (struct sockaddr*)&client, &size);
packetSize += sizeof(package);
printf("Bytes recieved: %d\n", bytes_recv);
}
我无法真正解决这个问题。当客户端发送了所有包并且服务器遭受了包丢失时,while循环不会结束,你有什么想法可以解决这个问题吗?
非常感谢。
packetSize
应该增加bytes_recv
。 - simoncrecvfrom()
或sendto()
失败,您的字节计数将会出现问题。 - alk