在C语言的UDP套接字上传输文件! Linux的

时间:2016-09-10 14:47:01

标签: c sockets udp

我编写了一个应用程序,用于在两个带UDP套接字的主机之间传输文件。

但似乎有些数据在客户端损坏了。

我的问题是:如果服务器比客户端更快,客户端是否可能从套接字读取损坏的数据?

我在服务器中使用sendto(),在客户端使用read()(在开始在客户端传输文件之前使用connect()), 如果是:我怎样才能阻止服务器发送新数据,直到客户端读完所有以前的数据?

1 个答案:

答案 0 :(得分:0)

  

如果服务器比客户端快,那么可能是   客户端可以从套接字读取损坏的数据吗?

不可能 - 您看到的每个数据报都会被IP层检错,并且会像发送时一样。

  

如何阻止服务器发送新数据,直到客户端有   阅读以前的所有数据?

通常,您发送一个小数据包,接收方发送确认,然后发送下一个。然而,UDP的问题是数据包可能会丢失,而不会告诉您事件重复,而且由于没有拥塞控制,您可以充斥网络。

那么为什么要重新发明轮子,使用TCP 来发送负责可靠性和拥塞控制的文件 - 每个人都使用它几十年,例如此网页使用TCP传送给您。