我使用TCP函数“recv”来接收数据。然后使用GetLastError()显示错误ID。它是115.在windows error.h中它是#define ERROR_PROTECTION_VIOLATION 115 / *用户虚拟地址错误* /。你能给我一些建议吗? PS:这个程序是在linux下运行的。但我认为linux&& amp;中的错误代码窗口必须与TCP错误相同。
答案 0 :(得分:1)
您在Linux下运行,因此在Windows error.h
中所说的内容完全无关紧要。在Linux中,errno.h,
115是:
#define EINPROGRESS 115 /* Operation now in progress */
我认为linux&&中的错误代码窗口必须与TCP错误相同。
你没有这种信念的基础。
答案 1 :(得分:0)
错误代码肯定是特定于操作系统的(因此您认为它在Windows和Linux上应该是相同的错误)。在Linux上,您应该阅读errno(3)手册页(在安装man 3 errno
和manpages
软件包后,您可以使用manpages-dev
命令获取该手册页。
TCP没有定义错误代码AFAIK。它定义了一个协议。
使用errno
的便携方式是使用EPERM
等符号名称,并使用strerror(errno)
或perror
向用户报告错误。请参阅strerror(3)和perror(3)。实际的错误号是系统特定的(即在Linux / x86和FreeBSD / ia64上可能不一样)。 Posix标准指定了符号errno.h。
我建议您阅读Advanced Linux Programming和Advanced Unix Programming等好书。
如果您想为Linux,Windows,MacOSX制作可移植代码,您可以使用Qt等框架
在我的Debian / Linux / AMD64系统上我有
#define EINPROGRESS 115 /* Operation now in progress */
标题/usr/include/asm-generic/errno.h
中的
使用syscall等recv(2)时,请阅读其手册页以了解何时可能发生特定错误。
注意:GetLastError
不是标准的Linux功能。它特定于您的程序或与其链接的某些库。