套接字:什么导致read()返回EINVAL?

时间:2011-05-16 14:36:41

标签: c sockets io blocking nonblocking

套接字客户端程序与服务器建立连接, 写入一些字节并使用(阻塞)read()等待响应。

但是失败了,错误为EINVAL(“无效参数”)。 以前对create()bind()connect()套接字的调用已成功完成。

我的问题

  • 这里有什么问题?

平台是Linux x64。

2 个答案:

答案 0 :(得分:2)

  

fd附加到一个对象上   不适合阅读;或文件   用O_DIRECT标志打开,然后   要么是buf中指定的地址,   count中指定的值,或者   当前文件偏移量不合适   对齐。

请参阅http://www.kernel.org/doc/man-pages/online/pages/man2/read.2.html

答案 1 :(得分:1)

问题是我将1个字节的大小传递给read()函数。 似乎不支持这个 (为什么?最小尺寸是多少?它必须是2 /平台位数的倍数?)。

现在我正在通过8并且它有效。 谢谢大家的意见。