对通过网络发送的文件进行错误检测-只能链接到c中的pthread和数学库

对通过网络发送的文件进行错误检测-只能链接到c中的pthread和数学库,c,sockets,network-programming,error-detection,C,Sockets,Network Programming,Error Detection,我需要将一个文件从一台主机传输到另一台主机,但数据可能会在两者之间损坏,因此我需要一些错误检测算法。所以我想我可以把md5的钱一起寄出去,但我的任务不允许。我们只能链接到pthread和数学库。我知道其中一种方法是使用CRC,但它会很耗时。有没有什么方法可以使用一些内置函数调用来完成类似md5或校验和的操作 编辑:我调用了分配中提供的sendto函数,该函数可能会损坏数据,然后将其发送。您知道TCP/IP在其包上已经有校验和吗?为什么您认为CRC会“耗时”?计算起来比md5便宜。@Joachim

我需要将一个文件从一台主机传输到另一台主机,但数据可能会在两者之间损坏,因此我需要一些错误检测算法。所以我想我可以把md5的钱一起寄出去,但我的任务不允许。我们只能链接到pthread和数学库。我知道其中一种方法是使用CRC,但它会很耗时。有没有什么方法可以使用一些内置函数调用来完成类似md5或校验和的操作


编辑:我调用了分配中提供的sendto函数,该函数可能会损坏数据,然后将其发送。

您知道TCP/IP在其包上已经有校验和吗?为什么您认为CRC会“耗时”?计算起来比md5便宜。@JoachimPileborg:我没有使用原始套接字,所以我怎样才能访问IP校验和。你能告诉我我们怎样才能访问它吗?我正在使用一个基本的SOCK_DGRAM socket。@PaulR:我不想实现CRC,因为这不是我们任务的主要目的。我认为MD5可以直接从图书馆获得,所以我可以使用它。考虑到我的链接限制,我还有其他选择吗?啊,这是一个故意的乱码,用来测试你检测它的技能。一个简单的CRC就足够了。应该很容易找到任何地方。只需将校验和作为固定大小的字段添加到实际数据的开头或结尾,并将其作为单个数据包发送。