2011-05-16 93 views
1

套接字客户端程序建立与服务器的连接, 写入一些字节并等待使用(阻止)read()的响应。套接字:什么导致read()返回EINVAL?

但是这个失败,错误EINVAL(“无效参数”)。 以前拨打create()bind()connect()插座已成功完成。

我的问题

  • 有什么不对吗?

平台是Linux x64。

+3

发布您的代码。 – 2011-05-16 14:38:18

+1

...并告诉你使用的是什么平台。 – Mat 2011-05-16 14:39:23

+0

的确,你需要登录。 “EINVAL”通常表示一个不小心的错误(可能与错误的参数一样简单),因此无法在没有看到代码的情况下进行诊断。 – 2011-05-16 14:52:22

回答

1

的问题是,我通过一个1个字节的大小为read()功能。 看来这不支持
(为什么?最小尺寸是多少?它必须是平台位数的2倍)。

现在我通过8,它的工作。 谢谢大家的意见。

+1

没有“平台位”这样的东西。您可能在某处发生了错误,并且它正常工作。您应该向我们提供代码。 – nos 2011-05-17 14:43:36

+0

你不应该接受它作为答案,因为那不是以前它不工作的原因! – 2016-01-05 17:27:40

2

fd附加在 不适合阅读的物体上;或者用O_DIRECT标志打开文件 ,并且 或者在buf中指定的地址, 中count指定的值,或者 当前文件偏移量不适当地与 对齐。

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

+1

请避免链接到'die.net'手册页。他们已经过时了,但却是谷歌搜索结果的顶部,因为人们发现它们并将它们作为问题的答案链接起来。最新的和权威的副本在'kernel.org'。 – 2011-05-16 14:50:42

相关问题