我正在使用recv函数(C)以获取有关网络问题的指示(在这种情况下,它返回负值)
查看此处:TCP连接失败处的http://tools.ietf.org/html/rfc1122#page-100,我看到有R1和R2.
R1是TCP通知应用程序有问题的时间. R2是连接关闭时.
“ R1的值应至少对应3
在当前的RTO重新传输. R2的值应
至少需要100秒.”
RTO(重传超时)通常从3秒开始,因此对于R1,可能在大约10秒之后.
据我了解,接收功能会让我知道R2.您知道在C应用程序中获取R1的方法吗?
10X.
解决方法:
在大多数系统上,recv()通过两种方式传输信息:返回码和设置全局变量errno.
要了解每种情况下返回/设置的内容,您必须查看recv()函数的确切API.
> R1(问题):recv()返回SOCKET_ERROR(windows)或-1(linux),然后查看WSAGetLastError(windows)或errno(linux)的详细信息
> R2(连接已关闭):我不确定,API不清楚.只是尝试;-)
完整文件:
>窗户:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740121%28v=vs.85%29.aspx
> Linux:http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/recv.2.html