0
|
463035818_is_not_an_ai · 技术社区 · 6 年前 |
1
4
不这不会让你更容易丢包。 查看网络传输如何在较低级别上发生;你有一张网卡。当该卡接收数据时,无论您的程序在做什么,它都会将数据存储到自己的存储区域中。当您呼叫recv时;您要求操作系统将数据从网卡内存移动到程序内存。这意味着如果一个数据包在线程执行其他操作时传入;它不仅会被删除,而且会在下次线程获取数据时进行处理。 如果你的线程没有足够频繁地调用recv;然后网卡的内存将变满。发生这种情况时,不能存储新的数据包;如果它使用TCP,那么路由器将被告知它无法处理它;如果它是UDP,那么它将被简单地删除。正是这一部分使得UDP天生不可靠,因为它可能在数据包传输过程中的任何时候发生。 超时影响线程等待数据出现在网卡存储区的时间;除非你再也不给recv打电话;不会影响丢弃的数据包。 |
2
0
答案是否定的,丢失UDP数据将违反 POSIX :
可以推测,“部分计数”只发生在基于连接的套接字中
也就是说
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |