我编写了一个应用程序,用于在两个带UDP套接字的主机之间传输文件。
但似乎有些数据在客户端损坏了。
我的问题是:如果服务器比客户端更快,客户端是否可能从套接字读取损坏的数据?
我在服务器中使用sendto()
,在客户端使用read()
(在开始在客户端传输文件之前使用connect()
),
如果是:我怎样才能阻止服务器发送新数据,直到客户端读完所有以前的数据?
答案 0 :(得分:0)
如果服务器比客户端快,那么可能是 客户端可以从套接字读取损坏的数据吗?
不可能 - 您看到的每个数据报都会被IP层检错,并且会像发送时一样。
如何阻止服务器发送新数据,直到客户端有 阅读以前的所有数据?
通常,您发送一个小数据包,接收方发送确认,然后发送下一个。然而,UDP的问题是数据包可能会丢失,而不会告诉您事件重复,而且由于没有拥塞控制,您可以充斥网络。
那么为什么要重新发明轮子,使用TCP 来发送负责可靠性和拥塞控制的文件 - 每个人都使用它几十年,例如此网页使用TCP传送给您。