send()中的套接字错误 - 没有这样的文件或目录

时间:2013-05-17 04:55:34

标签: sockets send errno

 if (fcntl (i4SockDesc, F_SETFL, O_NONBLOCK) < 0)
    {
        printf(LDP_IF_MISC, "LDPTCP: Client : Can't Set Sckt in NON BLK\n");
        return CONNECT_FAIL;
    }

  i4RetVal = send (i4SockDesc, (UINT1 *) pu1Data, u2BufLen, MSG_NOSIGNAL);
     if (i4RetVal != u2BufLen)
     {
         perror("Socket send failure!!\n");
         printf(i4SockDesc = %d, u2BufLen = %d, i4RetVal = %d\n", i4SockDesc, u2BufLen, i4RetVal);
         printf("Socket send Failure: %s, errno = %d\n",strerror(errno), errno);
     }

send()调用因perror“没有这样的文件或目录”errno = 2而失败。

i4SockDesc = 90, u2BufLen = 100, i4RetVal = -1
Socket send Failure: No such file or directory, errno = 2

1 个答案:

答案 0 :(得分:1)

如果send()实际发送请求的字节数更少,那么这不是一个失败。我想你的errno早些时候发生了。

如果i4RetVal < u2BufLen你应该在i4RetVal推进你的“发送光标”之后继续发送并减少buf长度(更好:要发送的长度)相同的数量。

继续这样做,直到你真的发送了所有内容。

如果i4RetVal < 0,您应该检查错误。