0

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

我有一个这样的程序,

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

我尝试运行程序,但结果总是!=EMVSSSendBufferLength

4

1 回答 1

1

您确实需要保留返回值。

  • 如果为 -1,您将在errno.
  • 如果它是肯定的,但小于EMVSSSendBufferLength它意味着只发送了很多字节,你必须通过单独的调用发送其余的字节。该单独的调用可能会阻塞(errno == EAGAIN如果它是非阻塞的,则可能会失败),因为不发送所有内容的原因是传输窗口已满。

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

于 2013-07-23T07:57:47.980 回答