如何调试TCP recv()

时间:2015-04-15 23:00:28

标签: c sockets tcp recv errno

我进行了client - server - server socket模拟双向通信。

我的行

recv(fd3, serv3_buf, BUFSIZE - 1, 0);

返回-1

如何使用recv调试errno.h

1 个答案:

答案 0 :(得分:3)

这是关于recv的错误相关的人(ual)解释!

  

错误          这些是套接字层生成的一些标准错误。 Addi-          可能会产生并从基础原型返回错误          col模块;请参阅他们的手册页。

   EAGAIN or EWOULDBLOCK
          The socket is marked nonblocking and the receive operation would
          block, or a receive timeout had been set and the timeout expired
          before data was received.  POSIX.1-2001 allows either  error  to
          be  returned for this case, and does not require these constants
          to have the same value, so a portable application  should  check
          for both possibilities.

   EBADF  The argument sockfd is an invalid descriptor.

   ECONNREFUSED
          A remote host refused to allow the network connection (typically
          because it is not running the requested service).

   EFAULT The  receive  buffer  pointer(s)  point  outside  the  process's
          address space.

   EINTR  The  receive  was interrupted by delivery of a signal before any
          data were available; see signal(7).

   EINVAL Invalid argument passed.

   ENOMEM Could not allocate memory for recvmsg().

   ENOTCONN
          The socket is associated with a connection-oriented protocol and
          has not been connected (see connect(2) and accept(2)).

   ENOTSOCK
          The argument sockfd does not refer to a socket.

当recv返回-1时,您可以使用perror()和strerror()来管理错误字符串。

见相关人员(ual)的解释:

perror

strerror