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() 调用因错误“没有此类文件或目录”errno = 2 而失败。
i4SockDesc = 90, u2BufLen = 100, i4RetVal = -1
Socket send Failure: No such file or directory, errno = 2
最佳答案
如果 send()
还不算失败实际上发送更少的字节 han 请求。我想你的 errno
更早发生。
如 i4RetVal < u2BufLen
您应该在将“发送光标”推进 i4RetVal
后继续发送并将 buf 长度(更好:要发送的长度)减少相同的数量。
继续这样做,直到您真的发送了所有内容。
只有在 i4RetVal < 0
时才应该检查错误.
关于sockets - send() 中的套接字错误 -- 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601676/