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
答案 0 :(得分:1)
如果send()
实际发送请求的字节数更少,那么这不是一个失败。我想你的errno
早些时候发生了。
如果i4RetVal < u2BufLen
你应该在i4RetVal
推进你的“发送光标”之后继续发送并减少buf长度(更好:要发送的长度)相同的数量。
继续这样做,直到你真的发送了所有内容。
如果i4RetVal < 0
,您应该检查错误。