如何阅读send(sock_fd, line, size, 0);

我有一个这样的程序,

if (send(new_socket,sendToEMVSS,EMVSSSendBufferLength,0)!=EMVSSSendBufferLength)

我尝试运行程序,但结果始终为!=EMVSSSendBufferLength

最佳答案

您确实需要保留返回值。


如果它是-1,那么您将在errno中找到详细的错误信息。
如果它为正,但小于EMVSSSendBufferLength,则意味着仅发送了许多字节,您必须通过单独的调用发送其余字节。该单独的调用可能会阻塞(如果未阻塞,则失败,如果没有阻塞,则失败),因为不发送所有内容的原因是传输窗口已满。


包真的是固定大小吗?您是否错误地传递了缓冲区的大小而不是实际消息的大小?

10-06 06:59