套接字:是什么导致 read() 返回 EINVAL?
套接字客户端程序与服务器建立连接, 使用(阻塞)read()
写入一些字节并等待响应。
但这会失败并出现错误EINVAL
(“无效参数”)。 之前对套接字的 create()
、bind()
和 connect()
调用已成功完成。
我的问题
- 这里出了什么问题?
平台是Linux x64。
A socket client program establishes a connection with the server,
writes some bytes and waits for response using the (blocking) read()
.
But this fails with the error EINVAL
("Invalid argument").
Previous calls to create()
, bind()
and connect()
the socket have been made successfully.
My Question
- What's wrong here?
Platform is Linux x64.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅http://www.kernel.org/ doc/man-pages/online/pages/man2/read.2.html
See http://www.kernel.org/doc/man-pages/online/pages/man2/read.2.html
问题是我向
read()
函数传递了 1 个字节的大小。好像不支持这个
(为什么?最小大小是多少?必须是 2/平台位数的倍数吗?)。
现在我传递了 8 并且它可以工作。
谢谢大家的评论。
The problem was that I passed a size of 1 byte to the
read()
function.It seems that this is not supported
(why? what is the minimum size? must it be a multiple of 2/the bitness of the platform?).
Now I am passing 8 and it works.
Thank you all for your comments.