|
0
|
| 463035818_is_not_an_ai · 技术社区 · 8 年前 |
|
|
1
4
不这不会让你更容易丢包。 查看网络传输如何在较低级别上发生;你有一张网卡。当该卡接收数据时,无论您的程序在做什么,它都会将数据存储到自己的存储区域中。当您呼叫recv时;您要求操作系统将数据从网卡内存移动到程序内存。这意味着如果一个数据包在线程执行其他操作时传入;它不仅会被删除,而且会在下次线程获取数据时进行处理。 如果你的线程没有足够频繁地调用recv;然后网卡的内存将变满。发生这种情况时,不能存储新的数据包;如果它使用TCP,那么路由器将被告知它无法处理它;如果它是UDP,那么它将被简单地删除。正是这一部分使得UDP天生不可靠,因为它可能在数据包传输过程中的任何时候发生。 超时影响线程等待数据出现在网卡存储区的时间;除非你再也不给recv打电话;不会影响丢弃的数据包。 |
|
|
2
0
答案是否定的,丢失UDP数据将违反 POSIX :
可以推测,“部分计数”只发生在基于连接的套接字中
也就是说
|